<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kami89</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kami89"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Kami89"/>
	<updated>2026-04-12T08:53:09Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Schaltplaneditoren&amp;diff=105095</id>
		<title>Schaltplaneditoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Schaltplaneditoren&amp;diff=105095"/>
		<updated>2022-03-18T09:53:22Z</updated>

		<summary type="html">&lt;p&gt;Kami89: LibrePCB zu Neulinge hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Grundüberlegungen zur Auswahl eines Layoutprogrammes ==&lt;br /&gt;
&lt;br /&gt;
Sehr häufig wird die Frage gestellt, welches Platinenlayoutprogramm man sich denn nun am besten kaufen soll. Diese Frage ist leider nicht einfach zu beantworten, weil sie von vielen Umständen abhängt und für jeden individuell beantwortet werden muss.&lt;br /&gt;
&lt;br /&gt;
Daher hier ein paar grundsätzliche Überlegungen, welche in die eigenen Entscheidungen einfließen könnten.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich ist der Übergang vom Hobbyanwender über den Studenten oder professionellen Kleingewerbetreibenden in Handwerk und Ingenieurbüro bis zum Vollzeitplatinenentwickler in der Industrie, der nur Großprojekte bearbeitet, stufenlos. Letztere haben im Allgemeinen aber schon genaue Vorstellungen über das, was sie benötigen. So sind diese Überlegungen in erster Linie für Hobbyanwender, Studenten und Kleingewerbe betreibende Ingenieurbüros gedacht.&lt;br /&gt;
&lt;br /&gt;
=== Freeware vs. Open Source ===&lt;br /&gt;
&amp;quot;Freeware&amp;quot; im Sinne von nur &amp;quot;kostenlos&amp;quot; kann gerade für Hobbyanwender, Studenten und Kleingewerbetreibende problematisch sein, weil bei den kostenlosen Versionen kommerzieller Programme je nach Lizensierung Probleme bestehen, damit erstellte Projekte zu veröffentlichen. Selbst wenn die Veröffentlichung nichtkommerziell ist und jemand anders greift die Unterlagen auf und verwertet sie kommerziell, kann der ursprüngliche Lizenznehmer wegen der Verletzung von Lizenzbestimmungen zur Rechenschaft gezogen werden. Hier ist also sehr intensiv das Kleingedruckte der Lizenzbestimmung zu beachten. Es mag zwar solche Programme geben, die auch eine kostenlose kommerzielle Nutzung erlauben, z.B. [[#DesignSpark_PCB|DesignSpark PCB]], aber auch hier ist dann z.B. eine Registrierung des Users unbedingt erforderlich und Details aus den Nutzungsbestimmungen sind genau zu prüfen. Gleiches gilt für zwar nicht kostenlose, aber stark verbilligte Studenten- oder Hobbyversionen kommerzieller Programme. Oft beinhalten diese kostenlosen oder stark verbilligten Versionen auch recht lästige Beschränkungen in Bezug auf Schaltplangröße, Platinengröße, Anzahl der Verbindungen/Pads und Layer. Testversionen haben oft eine beschränkte Gültigkeitsdauer über wenige Wochen. Sie sind zum Testen vor einer Kaufentscheidung gedacht. Daher sollte man mit solchen zeitbeschränkten Testversionen außer kleinen Testprojekten auch keine Projekte machen. Läuft die Lizenz aus und man entscheidet sich das Programm nicht zu kaufen oder zu mieten, kann man die Daten und somit die investierte Arbeit meist nicht weiter nutzen. Tatsächlich ist es daher oft sinnvoller sich eine Vollversion eines einfachen Programmes zu kaufen. Alternativ kann &amp;quot;echte&amp;quot; Open Source Software genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Bei diesen echten OpenSource-Programmen unter der [https://de.wikipedia.org/wiki/GNU_General_Public_License GNU-GPL-Lizenz] (oder Ähnlichen wie MIT) bestehen keine Probleme in der Verwertung und Veröffentlichung. Sogar für kommerzielle Projekte dürfen sie kostenlos verwendet werden. Diese Programme sind wirklich frei im Sinne von &amp;quot;freier Rede&amp;quot; und nicht nur im Sinne von &amp;quot;Freibier&amp;quot;. Leider gibt es davon nur wenige, z.B. &lt;br /&gt;
[[#gEDA-Suite|gEDA]], [[#KiCad|KiCad]] und [[#FreePCB|FreePCB]], sowie als Neuling und noch in der Entwicklung [[#Horizon|Horizon]] und [[#LibrePCB|LibrePCB]]. [[#Fritzing|Fritzing]] gehört zwar ebenfalls in diesen Kreis, doch unterscheiden sich die Zielgruppe und demzufolge einige Aspekte der Handhabung extrem von denen gewöhnlicher Layoutprogramme.&lt;br /&gt;
&lt;br /&gt;
Bei nicht quelloffener Software hat der Ersteller der Software den Nutzer der Software in der Hand, was die Zukunft angeht.&lt;br /&gt;
Er kann bei der Weiterentwicklung seiner Software die Lizenzbedingungen ändern und der Anwender muss folgen, will er nicht auf seiner alten Softwareversion festsitzen. Auch der Ersteller von quelloffener Software kann seine zukünftigen Lizenzbedingungen ändern, aber wegen der offenen quellen bzw. der offenen Dateiformate hat der User dann die Chance des Ausweichens, weil solche Projekte dann meistens aufgegriffen werden und aus den alten offenen Quellen weiterentwickelt werden. Daher kann eine Entscheidung für openSource wichtige strategische Vorteile haben. Wenn jemand Software veröffentlichen will, die wirklich &amp;quot;frei&amp;quot; ist, gibt es sonst kaum einen Grund, die Quellen nicht zu veröffentlichen und proprietäre Lizenzen abweichend von den anerkannten Open Source Lizenzen wie  [https://de.wikipedia.org/wiki/GNU_General_Public_License GNU-GPL], [https://de.wikipedia.org/wiki/Creative_Commons Creative Commons], [https://de.wikipedia.org/wiki/BSD-Lizenz BSD-Lizenz], [https://de.wikipedia.org/wiki/MIT-Lizenz MIT-Lizenz] oder auch der [https://de.wikipedia.org/wiki/CERN_Open_Hardware_License CERN-OHW] mit all ihren Unterabspaltungen zu verwenden, oder auch alles gleich [https://de.wikipedia.org/wiki/Gemeinfreiheit gemeinfrei] zu stellen.&lt;br /&gt;
Daher kann eine Entscheidung für openSource wichtige strategische Vorteile haben.&lt;br /&gt;
&lt;br /&gt;
=== Einarbeitung ===&lt;br /&gt;
Grundsätzlich gibt es kein Layoutprogramm, in das man sich nicht einarbeiten müsste. Platinenentwicklung ist eine komplexe Angelegenheit, egal mit welcher Philosophie man sie angeht. Daher kommt man ohne Einarbeitung nie davon. Auf der anderen Seite werden jemandem, der mit einem Leiterplattenprogramm umgehen kann, vermutlich zwei Drittel eines anderen  Layoutprogrammes irgendwie bekannt vorkommen. Der Grund ist der, dass es dabei um Leiterplatten, ihre Eigenschaften und Herstellung geht. Dieses ist aber als Kontext, aus dem sich dann vieles ergibt, bei allen gleich. Unterschiede gibt es darum nur in Details der Handhabung.&lt;br /&gt;
&lt;br /&gt;
=== Handlichkeit ===&lt;br /&gt;
Die Programme sind vielfältig und zu komplex für eine vollkommen intuitive Bedienung, daher ist bei allen eine nicht unerhebliche Einarbeitungszeit erforderlich.&lt;br /&gt;
&lt;br /&gt;
Schaltungen und Boards kann man mit allen dieser Layoutprogramme entwickeln. Es hängt an den speziellen Bedürfnissen und dem speziellen Geschmack des konkreten speziellen Anwenders, womit er am besten umgehen kann. Dies ist vom kulturellen Hintergrund und der individuellen Persönlichkeit des Anwenders abhängig, daher kann hier keine allgemeingültige Empfehlungen abgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Daher sollte man sich einige der Programme ansehen und damit experimentieren. Das ist leider der einzige Weg, um sich selber ein Bild zu machen. Dazu können auch durchaus die &amp;quot;kostenlosen&amp;quot; Versionen kommerzieller Programme verwendet werden. Aber Vorsicht: Erst einmal keine größeren Projekte mit Testversionen. Denn wenn die Erprobungsfrist abgelaufen ist, oder wenn man vor eine andere Beschränkung läuft, und dann das Programm doch nicht kaufen will, kann die darin eingebrachte Arbeit nicht mehr in ein anderes Programm übertragen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reine Schaltplaneditoren ==&lt;br /&gt;
&lt;br /&gt;
Diese haben keinen oder nur einen rudimentären Layouteditor. Somit können damit im wesentlichen nur Schaltpläne erstellt werden. Immerhin bieten viele einen Stücklistenexport an.&lt;br /&gt;
&lt;br /&gt;
=== Circuit Diagram ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Circuit Diagram&#039;&#039;&#039; ist ein moderner webbasierter editor. Das Programm muss nicht auf dem PC installiert werden, da es direkt im Browser genutzt werden kann. Die meisten Bauteile sind enthalten. Man kann sich aber auch vorgefertigte Plugins installieren oder sogar selber Bauteile kreieren.&lt;br /&gt;
Die Schaltpläne lassen sich lokal auf dem PC speichern oder mithilfe einer Google-Anmeldung.&lt;br /&gt;
&lt;br /&gt;
https://www.circuit-diagram.org/&lt;br /&gt;
&lt;br /&gt;
[[Datei:Circuitdiagram.png|rahmenlos]]&lt;br /&gt;
&lt;br /&gt;
=== AACircuit ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AACircuit&#039;&#039;&#039; ist ein Schaltplaneditor mit einer Ausgabe als ASCII-Grafik. Das Programm wurde dafür entwickelt, um mal eben eine Frage oder eine Antwort in &#039;&#039;newsgroups&#039;&#039;, Chats oder Foren zu veranschaulichen, wenn keine Upload-Möglichkeit von Bilddateien da ist. AACircuit gibt es bei http://www.tech-chat.de/ ([http://9r1.org/AACircuit1_28_6.zip Download-Mirror])&lt;br /&gt;
&lt;br /&gt;
Für allgemeine ASCII-Skizzen, wie Flussdiagramme oder UML, eignet sich [http://asciiflow.com ASCIIflow.com] ([http://stable.ascii-flow.appspot.com/ →alte Version]) besser.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  .---o----o------o---o---------------o---o----o------------o 12-15V&lt;br /&gt;
  |   |    |  22µF| + |               |   |    |&lt;br /&gt;
 .-.  |   .-.    ###  |              .-.  |    |    .-------o&lt;br /&gt;
 | |&amp;lt;-&#039;   | |    ---  |              | |  |    |    |   .---o&lt;br /&gt;
 | |5k    | |5k6  |   |              | |  |    |    |   |&lt;br /&gt;
 &#039;-&#039;      &#039;-&#039;     |   o--.           &#039;-&#039;  |   _|_   o  /o&lt;br /&gt;
  |        |     ===  |  |            |   |  |_/_|-   /&lt;br /&gt;
 .-.       |     GND  | ---100n   LED V   -    |     /&lt;br /&gt;
 | |       |          | ---           -   ^    |    o&lt;br /&gt;
 | |6k2    |          |  |            |   |    |    |&lt;br /&gt;
 &#039;-&#039;       |          | GND           &#039;---o----o    &#039;-------o&lt;br /&gt;
  |        |       2|\|7                       |&lt;br /&gt;
  o-----------------|-\ LM741      ___       |/&lt;br /&gt;
  |        |        |  &amp;gt;-------o--|___|--o---|&lt;br /&gt;
  |        o---o----|+/ 6      |   22k   |   |&amp;gt;  BC547&lt;br /&gt;
  |        |   |   3|/|4       |         |     |&lt;br /&gt;
 .-.       |   |     ===       o---.    .-.    |&lt;br /&gt;
 | |       |   o---. GND       |   |    | |5k6 |&lt;br /&gt;
 | |2k7   .-.  |   |   ___    _V_  |    | |    |&lt;br /&gt;
 &#039;-&#039;     KTY10 | + &#039;--|___|--|___|-&#039;    &#039;-&#039;    |&lt;br /&gt;
  |       | | ###      47k   220k        |     |&lt;br /&gt;
  |       &#039;-&#039; ---                        |     |&lt;br /&gt;
  |        |   |                         |     |&lt;br /&gt;
  |        |   |                         |     |&lt;br /&gt;
  &#039;--------o---o-------------------------o-----o------------o GND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic Schematic ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Base schematic example.png|right|thumb|Screenshot Basic Schematic]]&lt;br /&gt;
&lt;br /&gt;
Basic Schematic (&#039;&#039;&#039;BSch3V&#039;&#039;&#039;) ist ein freier Schaltplaneditor für Windows (98/Me/2000/XP). In der aktuellen Version läuft es auch unter Windows7. Es enthält einen Component Library Editor, einen Parts List Generator und einen Netlist Generator, sowie eine Automatic Numbering Funktion.&lt;br /&gt;
&lt;br /&gt;
Ein ZIP-Archiv mit engl. Programm, Handbuch und Sourcecode gibt es bei http://www.suigyodo.com/online/e/index.htm.&lt;br /&gt;
&lt;br /&gt;
Ebenso ist dort eine Cross-Plattform Version &#039;&#039;&#039;Qt-BSch3V&#039;&#039;&#039; auf der Basis von Qt-Grafiklibraries erhältlich.&lt;br /&gt;
&lt;br /&gt;
Das Programm ermöglicht den Export der Schaltungsdaten im [[KiCad]]-Format.&lt;br /&gt;
&lt;br /&gt;
Das Programm ist bis dato (Mai 2014) gut gepflegt.&lt;br /&gt;
&lt;br /&gt;
=== Caneda===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://caneda.org/ Caneda]&#039;&#039;&#039; ist eine open Source Schaltplaneditor und Platinenlayoutsoftware, die auch die Simulation gut integrieren will (Mit Ngspice als Simulationsprogramm). Autor ist Pablo Daniel Pareja Obregon. Caneda ist für Linux und Windows verfügbar. Bei Debian 9.6 (Stretch) ist Caneda bereits im Repository. Es sieht aber so aus, als wäre z.z. noch kein Platinenlayouttool verfügbar. Darum der Eintrag hier unter Schaltplaneditoren. Die Webseite ist etwas unübersichtlich, aber die Dokumentation ist hier zu finden: http://docs.caneda.org/en/latest/gettingstarted.html.&lt;br /&gt;
Erfahrungsberichte willkommen.&lt;br /&gt;
&lt;br /&gt;
=== Lepton-EDA ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://github.com/lepton-eda Lepton-EDA]&#039;&#039;&#039; ist ein Fork der [https://www.mikrocontroller.net/articles/Schaltplaneditoren#gEDA-Suite gEDA-Suite]. Bisher aber nur mit Schaltplanerstellung, Netzlistenerstellung und Matriallisten (BOM) Erstellung. Lizenz is GPL. Erfahrungsberichte willkommen.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape ===&lt;br /&gt;
&lt;br /&gt;
Etwas bekannter noch als Jfig ist [https://inkscape.org/de &#039;&#039;&#039;Inkscape&#039;&#039;&#039;], ebenfalls ein reines Vektorzeichenprogramm, das vor allem (aber nicht nur) SVG-Dateien erstellt, die mit der Wikipedia eine große Verbreitung gefunden haben. Es ist in fast jeder gängigen Linux Distribution enthalten, eine Windowsversion sowie eine [http://portableapps.com/apps/graphics_pictures/inkscape_portable &#039;&#039;&#039;portable Windowsversion&#039;&#039;&#039;] existiert auch. In der Wikipedia findet sich eine Sammlung von Elektroniksymbolen im [https://commons.wikimedia.org/wiki/Category:SVG_electrical_symbols SVG-Format] und [https://commons.wikimedia.org/wiki/File:Electrical_symbols_library.svg hier]. Als Beispiele damit gezeichneter Schaltpläne sei diese [https://commons.wikimedia.org/wiki/Category:Created_with_electrical_symbols_library] genannt.&lt;br /&gt;
&lt;br /&gt;
=== KISSCAD ===&lt;br /&gt;
&lt;br /&gt;
[http://ludens.cl/Electron/kisscad/kisscad.html Kisscad] ist ein reiner Schaltplaneditor, dafür sind die Schaltpläne druckreif.&lt;br /&gt;
&lt;br /&gt;
Es ist ein portables Windows XP 32bit Programm, läuft aber auch recht gut unter Linux/Wine. Erinnert mit seiner Tastatursteuerung vage an das alte DOS Orcad. Das Zip-File zum Download enthält außer dem Programm und Drumherum eine 12 seitige Bedienungsanleitung in Englisch. Freeware, aber &#039;&#039;&#039;nicht&#039;&#039;&#039; Open Source. Entwickelt von Manfred Mornhinweg aus Chile.&lt;br /&gt;
&lt;br /&gt;
=== QCAD ===&lt;br /&gt;
&lt;br /&gt;
[http://www.ribbonsoft.de/qcad.html QCAD] gibt es in einer lizenzpflichtigen und in einer Open Source Community Version. QCAD ist kein ausschließlicher Schaltungseditor, sondern kann auch für andere 2D Zeichnungen (Konstruktionen etc.) eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
=== sPlan ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;sPlan&#039;&#039;&#039; ist ein relativ preiswerter Schaltplaneditor für Windows (95,98,ME,NT,2000,XP,Vista,7,8,10, Versionen ab Oktober 2019 erfordern mindestens Vista oder höher)&lt;br /&gt;
Infos und eine Demoversion von sPlan gibt es u.a. bei http://www.abacom-online.de/html/splan.html&lt;br /&gt;
&lt;br /&gt;
=== TinyCAD ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TinyCAD&#039;&#039;&#039; ist ein weiterer &#039;&#039;Open Source&#039;&#039; Schaltplaneditor für Windows. Mehr Infos gibt es auf der [https://sourceforge.net/projects/tinycad Projektseite]. TinyCAD kann z.&amp;amp;nbsp;B. mit VeeCAD (s.u.) kombiniert werden.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan- und Leiterplattensoftware - für Lochrasterplatinen und Steckbretter ==&lt;br /&gt;
&lt;br /&gt;
Für experimentelle Zwecke wird gerne auf Streifen- oder Lochraster Platinen zurückgegriffen, die als &amp;quot;Layout&amp;quot; lediglich regelmäßig angeordnete Pads als Lötstützpunkte besitzen, zwischen denen Bauteile angeordnet werden. Desweiteren existieren Steckbretter, bei denen bedrahtete Bauteile in mit Kontaktfedern besetzte Löcher gesteckt werden können.&lt;br /&gt;
Diese Programme unterstützen den Aufbau und die Dokumentation solcher Experimentieraufbauten mit einem sehr speziellen grafischen Tool, welches die Lochrasterplatine bzw. das Steckbrett darstellt.&lt;br /&gt;
&lt;br /&gt;
Streifen- und Lochraster Platinen können aber grundsätzlich auch mit allen anderen Layoutprogrammen entwickelt bzw. dokumentiert werden, die ein Raster anzeigen können. Exemplarisch sei hier auf die bei KiCad beschriebene Methode verwiesen:&lt;br /&gt;
http://www.mikrocontroller.net/articles/KiCad#Tipps.26Tricks:_Lochraster.2FL.C3.B6tleisten_Platinen_Entwurf_mit_KiCad&lt;br /&gt;
&lt;br /&gt;
=== BlackBoard Circuit Designer ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:BlackBoard.png|right|thumb|Screenshot BlackBoard Circuit Designer]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BlackBoard Circuit Designer&#039;&#039;&#039; ist ein freier Schaltplaneditor und ein Layoutprogramm für Loch- und Streifenrasterplatinen, der das Planen der Bauteilplatzierung sowie der beidseitigen Verdrahtung deutlich vereinfacht und sich u.a. auch für die Dokumentation solcher Prototypenaufbauten eignet. Außerdem hat er eine Schnittstelle zur Simulation mit NGSPICE.&lt;br /&gt;
&lt;br /&gt;
Es benötigt eine Java Runtime, wobei die neueren Versionen vom Oracle JDK nicht unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
Die Entwicklung des Programmes wurde eingestellt. &lt;br /&gt;
Der Sourcecode steht unter https://github.com/mpue/blackboard zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
=== DIY Layout Creator ===&lt;br /&gt;
&lt;br /&gt;
Ein Layoutprogramm, welches einen sehr künstlerischen Ansatz verfolgt. Mit ihm können Schaltpläne/Layouts wie in den Aufbauanleitungen von Bausätzen gezeichnet werden. Lochrasterplatinen werden unterstützt. Damit gehört es wie [[#Fritzing|Fritzing]] in die spezielle Kategorie abstraktionsvermeidender Layoutprogramme. Die  Zielgruppe für dieses Programm sind Künstler, Designer und Hobbyisten, spezieller wohl sogar Musiker, aber nicht unbedingt Profielektroniker. Die Software geht speziell auf diese Zielgruppe ein. Dabei wird wie bei Fritzing auf eine niedrige Zugangsschwelle und ein geringes Abstraktionsniveau wert gelegt. Das Programm ist Freeware (GPL v3). Das Programm läuft auf allen Betriebssystemen, auf denen es das Java JDK 8 oder neuer gibt.  Der Autor der Software ist Branislav Stojkovic.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bancika/diy-layout-creator/blob/master/README.md Link auf die DIY Layout Creator Website]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bancika/diy-layout-creator/releases Download]&lt;br /&gt;
&lt;br /&gt;
=== Fritzing ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Fritzing bildschirmfoto.png|miniatur|rechts|Bildschirmfoto Fritzing]]&lt;br /&gt;
&#039;&#039;&#039;Fritzing&#039;&#039;&#039; verwendet die Metapher eines Breadboards (Steckbretts), auf dem die Benutzer virtuell Bauteile einstecken. Fritzings Zielgruppe sind Künstler, Designer und Hobbyisten aber nicht unbedingt Profielektroniker und die Software soll speziell auf die Zielgruppe zugeschnitten werden. Dabei wird auf eine niedrige Zugangsschwelle wert gelegt. Das Programm zählt damit genau wie der [[#DIY_Layout_Creator|DIY Layout Creator]] in die Kategorie spezieller abstraktionsvermeidender Layoutsoftware.&lt;br /&gt;
Versionen für Mac OS X, Linux und Windows (XP/Vista) sind bei http://www.fritzing.org erhältlich.&lt;br /&gt;
Nichtsdestotrotz besitzt das Programm drei Ansichten, von denen die Erste am häufigsten gezeigt wird – das o.a. Breadboard oder auch eine Streifenrasterplatte. Weiter wird aus dem Steckbrett in einer zweiten Ansicht ein Schaltplan erstellt und in einer dritten Ansicht lässt sich sogar eine ätzbare Leiterplatte mittels Autorouting entwerfen. Die Bauteilliste enthält bereits fertige Komponenten der [[Arduino]]-Gemeinschaft und ähnlicher Produkte wie die von Sparkfun, Parallaxe oder Picaxe. Ein paar Standardbauteile wie eine rote LED oder ein 220Ohm-Widerstand sind schnell zu finden. Die Bauteilbibliothek lässt sich erweitern.&lt;br /&gt;
Die Bedienung ist einfach zu erlernen und es gibt zwar Tastaturkürzel für die wichtigsten Funktionen, aber der erste Schaltplan ist schnell allein mit der Maus erstellt. Eine Umschaltung zwischen Platzierung der Bauteile und Routing ist nicht notwendig. Einfaches Klicken und Ziehen erstellt eine Kabelbrücke als Luftlinie. Auf Ebenen muss der Nutzer auch nicht verzichten. So lassen sich Bauteile, Kabel und Beschriftungen ein- und ausblenden. Auch wenn die Version noch nicht die 1.0 erreicht hat, kann Sie bei bei Schaltungen bis ca. 30 Teilen mit professionellen Programmen mithalten was den Zeitaufwand und die Übersichtlichkeit betrifft.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Lochmaster ===&lt;br /&gt;
&lt;br /&gt;
[http://www.abacom-online.de/html/lochmaster.html Lochmaster] ist ein kommerzielles Programm zur Erstellung von Layouts speziell auf [[Lochrasterplatine]]n. Schaltplan und Layout sind ein und dasselbe.&lt;br /&gt;
&lt;br /&gt;
=== ProtoCAD ===&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/projects/protocad/ ProtoCAD] ist ein Werkzeug, um schnell Schaltpläne zu entwerfen. Es ist für [[Lochrasterplatine]]n entwickelt worden, kann aber auch für andere Methoden genutzt werden. (Java 1.5 kompatibel, Swing GUI, Open Source). Letzte Aktualisierung 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== VeeCAD ===&lt;br /&gt;
&lt;br /&gt;
[http://veecad.com/ VeeCAD] Stripboard Layout Editor ist ein Werkzeug, um [[Lochrasterplatine]]n zu entwerfen. VeeCAD ist jetzt als uneingeschränkte Version erhältlich, also nicht mehr in kommerzielle und eingeschränkte freie Version aufgeteilt: NOW FREE AND OPEN SOURCE&lt;br /&gt;
&lt;br /&gt;
== gEDA-Suite ==&lt;br /&gt;
&lt;br /&gt;
gEDA ([[gEDA|Artikel]]) ist eine unter anderem aus [[#Gschem|Gschem]] und [[#PCB|PCB]] bestehende Open Source Programmsammlung zur Entwicklung von Schaltplänen und Platinen, die 1998 gegründet wurde.&lt;br /&gt;
&lt;br /&gt;
=== Gschem ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Gschem.png|right|thumb|Screenshot Gschem]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Gschem&#039;&#039;&#039;&#039;&#039; ist der Schaltplaneditor aus dem Open Source Projekt gEDA. &#039;&#039;gschem&#039;&#039; wird hauptsächlich auf Linux Rechnern entwickelt, läuft aber auch auf anderen Unix-Betriebssystemen und unter Windows. &#039;&#039;gschem&#039;&#039; ist für die Linuxdistributionen RedHat und Debian als Paket verfügbar, für Windows ist nur eine ältere Version erhältlich und für alle anderen ist selber kompilieren angesagt.&lt;br /&gt;
&lt;br /&gt;
Die Bedienung ist nicht sonderlich anfängerfreundlich. Hat man sich aber mal daran gewöhnt, dass jeder Menüpunkt mit 1 oder 2 Tasten erreichbar ist, läßt sich&#039;s mit &#039;&#039;gschem&#039;&#039; prima arbeiten. &lt;br /&gt;
&lt;br /&gt;
In der Symbolbibliothek (die auch online betrachtet werden kann) sind etwas mehr als 1000 Symbole; das Selbsterzeugen von Symbolen ist jedoch problemlos möglich. Insbesondere ist es aufgrund des gut dokumentierten und einfachen Datei-Formates möglich, mit einfachen Perl-Programmen z.&amp;amp;nbsp;B. aus Reports von Xilinx ISE Symbole zu erzeugen und automatisch zu aktualisieren, wenn sich die Pinzuordnung ändert. Das fehlerhafte Eingeben der Pinbelegung von CPLDs und FPGAs von Hand und die Änderung derselben ist damit für &#039;&#039;gschem&#039;&#039; User Geschichte.&lt;br /&gt;
&lt;br /&gt;
Die Schaltpläne lassen sich als png und als Postscript exportieren. &lt;br /&gt;
&lt;br /&gt;
Netzlisten (insgesamt über 20 Formate für PCB, Protel, Eagle, BAE, spice, pads, ... ) lassen sich mit dem Programm &#039;&#039;gnetlist&#039;&#039; generieren. Aus diesem Grund ist man (bis auf die Namen der Footprints) unabhängig von der verwendeten Layout-Software und kann diese auch sehr leicht wechseln.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Gschem&#039;&#039; bildet zusammen mit PCB und anderen Programmen das [[GEDA|gEDA]] Programmpacket.&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil der gEDA-Suite sind die Dateiformate, welche alle reiner ASCII-Text sind. Dies macht die Entwicklung von Helper-Tools zur Lösung von speziellen Aufgaben sehr leicht. Außerdem können die Dateien deswegen sehr einfach in Versionsverwaltungssystemen wie CVS verwaltet werden, was insbesondere die Entwickler größerer Projekte zu schätzen wissen.&lt;br /&gt;
&lt;br /&gt;
Nähere Informationen über &#039;&#039;gschem&#039;&#039; (gEDA) gibt es unter [http://www.geda.seul.org http://www.geda.seul.org].&lt;br /&gt;
Hier auf der Mikrocontroller.net Seite finden sich Informationen zu Gschem [[GEDA|unter gEDA]].&lt;br /&gt;
&lt;br /&gt;
=== PCB ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;[http://pcb.sourceforge.net/index.html PCB]&#039;&#039;&#039;&#039;&#039; ist ein freies (Open Source) Layoutprogramm inklusive Autorouter. Zum Zeichnen der Schaltpläne kann [[#Gschem|Gschem]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PCB&#039;&#039; wurde ursprünglich für den Atari ST entwickelt und später nach Unix portiert. &#039;&#039;PCB&#039;&#039; läuft meist unter Linux, kann allerdings mit [https://www.cygwin.com Cygwin] auch unter Windows betrieben werden.&lt;br /&gt;
&lt;br /&gt;
Als Ausgabeformate stehen [https://de.wikipedia.org/wiki/Postscript Postscript] und Gerber RS-274-X zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Ein großer Vorteil von &#039;&#039;PCB&#039;&#039; ist, dass alle Funktionen auch über Hotkeys gesteuert werden können, was insbesondere nach längerer Einarbeitungszeit ein großer Gewinn gegenüber manchen Windows-Programmen ist.&lt;br /&gt;
&lt;br /&gt;
Zur Einarbeitung ist es meines Erachtens sehr wichtig, sich das [http://www.geda.seul.org/wiki/geda:gsch2pcb_tutorial Tutorial] durchzulesen. &#039;&#039;PCB&#039;&#039; und &#039;&#039;Gschem&#039;&#039; sind nicht besonders einfach zu benutzen. Gerade am Anfang, wenn man sich versucht damit einzuarbeiten. Aber wenn man einmal mit dem Werkzeug arbeiten kann, wird man es nicht mehr missen wollen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;PCB&#039;&#039; bildet zusammen mit &#039;&#039;Gschem&#039;&#039; und anderen Programmen das [[GEDA|gEDA]] Programmpaket. Hier auf der Mikrocontroller.net Seite finden sich Informationen zu PCB [[GEDA|unter gEDA]].&lt;br /&gt;
&lt;br /&gt;
==== PCB-RND ====&lt;br /&gt;
&lt;br /&gt;
Homepage: http://repo.hu/projects/pcb-rnd/index.html&lt;br /&gt;
PCB-RND ist eine Weiterentwicklung von PCB, das extrem flexibel und kompatibel mit anderen Layout-Tools sein will. Siehe http://repo.hu/projects/pcb-rnd/user/09_appendix/bridges.svg Es werden 10 Skriptsprachen unterstützt.&lt;br /&gt;
&lt;br /&gt;
== Schaltplan- und Leiterplattensoftware - Sonderlösungen ==&lt;br /&gt;
&lt;br /&gt;
Alle Softwarelösungen, die nicht in andere Kategorien passen. Teilweise sehr neu mit unklarem Geschäftsmodell, weshalb es noch keine Erfahrung gibt, teilweise ältere Open Source Projekte.&lt;br /&gt;
&lt;br /&gt;
=== Electric ===&lt;br /&gt;
&lt;br /&gt;
Das [http://www.staticfreesoft.com/index.html Electric(TM)] VLSI Design System ist ein Open Source Electronic Design Automation (EDA) System.&lt;br /&gt;
&lt;br /&gt;
=== FidoCadJ ===&lt;br /&gt;
&lt;br /&gt;
[http://davbucci.chez-alice.fr/index.php?argument=elettronica/fidocadj/fidocadj.inc&amp;amp;language=English FidoCadJ] is a very easy to use editor, with a library of electrical symbols and footprints (through hole and SMD). Albeit its ease of use, it is a very immediate and effective EDA tool for the hobbyst. FidoCadJ stores its drawings in a compact text format. This choice is well suited for the copy and paste in newsgroups and forums. This explains the success of FidoCadJ in Usenet groups and in several portals. FidoCadJ is multi-platform Java program and runs on MacOSX, Linux and Windows. FidoCadJ and its manuals are in english, french and italian. Lizenz: Creative Commons 3.0 BY-NC-ND&lt;br /&gt;
&lt;br /&gt;
=== FreePCB ===&lt;br /&gt;
&lt;br /&gt;
FreePCB ist ein Open Source PCB Editor für Microsoft Windows, der unter der GNU General Public License veröffentlicht wurde. Er wurde entwickelt, um ihn einfach erlernen und nutzen zu können und dennoch für professionelles Arbeiten geeignet. Er besitzt keinen eingebauten Auto-Router, kann jedoch den web-basierten auf www.freerouting.net verwenden.&lt;br /&gt;
&lt;br /&gt;
* http://en.wikipedia.org/wiki/FreePCB Englischer Wikipedia Eintrag.&lt;br /&gt;
* http://www.freepcb.com/ Offizielle Homepage&lt;br /&gt;
* http://www.freepcb.com/freepcb_user_guide.pdf Users Guide&lt;br /&gt;
&lt;br /&gt;
=== EasyEDA ===&lt;br /&gt;
&lt;br /&gt;
[https://easyeda.com/ EasyEDA] ist eine kostenlose, Webbrowser-basierte EDA-Plattform zur Entwicklung von Schaltplänen, PCB-Layouts und Prozess-Simulationen (SPICE), deren Nutzung, &#039;&#039;&#039;aber nicht dessen Sourcecode&#039;&#039;&#039; unter der CC BY-SA 2.5 steht (Quelle: https://easyeda.com/page/privacy). Schaltpläne können direkt im Browser via Internet auf einem Server unter Zuhilfenahme der verfügbaren Bibliotheken erstellt werden. Der Serverdienst wird dabei von einem Leiterplattenhersteller gestellt. Projekte können sowohl als privates, als auch als öffentliches Projekt gespeichert werden. Es können Bibliotheken von Altium, Eagle, KiCad und LTspice importiert werden. Aus einem Schaltplan kann auf dem Server ein PCB-Layout gezeichnet werden, und beim Anbieter des Dienstes bestellt werden. Die Layout-Erstellung wird durch eine Autoroute-Funktion unterstützt. Das Projekt wird dabei in einem JSON Stil gespeichert, es kann aber auch in Gerber exportiert werden. Natürlich setzt die Nutzung des Dienstes einen funktionierenden permanenten Internetzugang voraus.&lt;br /&gt;
&lt;br /&gt;
=== ExpressPCB ===&lt;br /&gt;
&lt;br /&gt;
Die Firma &#039;&#039;&#039;ExpressPCB&#039;&#039;&#039; bietet den kostenlosen Schaltplaneditor &#039;&#039;&#039;&#039;&#039;ExpressSCH&#039;&#039;&#039;&#039;&#039; an. Zusätzlich gibt es das kostenlose Layoutprogramm &#039;&#039;&#039;&#039;&#039;ExpressPCB&#039;&#039;&#039;&#039;&#039; zum Erstellen von zwei- und vierlagigen Leiterplatten. Die beiden Programme sind auf Windows (NT, 2000, XP, Vista) beschränkt. Die Firma bietet auf der [https://www.expresspcb.com ExpressPCB Homepage] außerdem einen kommerziellen Service für die Herstellung von zwei- und vierlagigen Leiterplatten an. Auf der Seite finden sich [https://www.expresspcb.com/tips-for-designing-pcbs/ hier] einige Hinweise zum Entwurf von Leiterplatten.&lt;br /&gt;
&lt;br /&gt;
=== PCBWeb ===&lt;br /&gt;
&lt;br /&gt;
Ein kostenloser Layout- und Schaltplaneditor, dessen Lizensierung unklar ist.(Quelle: http://www.pcbweb.com/faq am 17. Mai 2017). Die Projektdaten werden in einem XML Format lokal vorgehalten, die Bibliotheken liegen auf einer Cloud des Anbieters (Quelle: http://www.pcbweb.com/faq am 17. Mai 2017). Dieser bietet auch eine Möglichkeit an, Platinen aus den Projektdaten zu erstellen. Ein Datenexport ist aber nur in Gerber möglich. Alle verwendeten Bauteile, die auch Arrow im Angebot hat, erscheinen in der Stückliste und können per Knopfdruck dort bestellt werden (Quelle: http://www.pcbweb.com/documentation#bill-of-materials-manager).&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbweb.com/ Webseite zum Download]&lt;br /&gt;
&lt;br /&gt;
=== Razen PCB ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Razenpcb.png|miniatur|rechts|Screenshot Razen PCB]]&lt;br /&gt;
&lt;br /&gt;
[http://razencad.com/ Razen CAD] ist zwar noch in der Beta Phase, aber sieht momentan schon recht vielversprechend aus. &lt;br /&gt;
Es setzt auf Mercurial auf und ermöglicht dadurch kolaboratives arbeiten an einem Layout.&lt;br /&gt;
&lt;br /&gt;
=== ZenitPCB Suite ===&lt;br /&gt;
&lt;br /&gt;
[http://www.zenitpcb.com/eng/IndexEng.html ZenitPCB Suite] is directed to all those people who want to make printed circuit board for hobby, or to student and academics from universities or high schools, who want to create their own pcb with a professional approach and particularly without having to pay for expensive licenses. ZenitPCB Layout (part of the ZenitPCB Suite) is completely freeware for personal or semi-professional use, limited to [http://www.zenitpcb.com/images/MainBoard_01_01.gif 800 pins]. (Windows XP, Vista)&lt;br /&gt;
&lt;br /&gt;
Übersetzung: ZenitPCB richtet sich an all diejenigen, welche fürs Hobby, Schule, Studium etc professionelle PCBs erstellen möchten, ohne viel Geld für Lizenzen ausgeben zu müssen. ZenitPCb ist in der eingeschränkten Version mit 800 Pins für den semi-professionellen und privaten Gebrauch kostenfrei benutzbar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Schaltplan- und Leiterplattensoftware - meist verwendete Programme ==&lt;br /&gt;
&lt;br /&gt;
Diese zeichnen sich durch eine (relativ) geringe Einarbeitungszeit aus. Eagle ist der wohl bekannteste Vertreter und kostet in einer kommerziell verwendbaren Version gut drei- bis vierstellig. TARGET 3001! ist in Mitteleuropa recht verbreitet und etwas günstiger als Eagle. KiCad ist Open Source und hat seit 2014 Fahrt aufgenommen.&lt;br /&gt;
&lt;br /&gt;
Alle bestehen aus Schaltplaneditor und Layoutprogramm inklusive 3D-Ansicht. Mit keinem der Drei macht der versierte Hobbyist eine schlechte Wahl, kostenlose Versionen gibt es ebenso.&lt;br /&gt;
&lt;br /&gt;
=== Eagle ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Eagle.png|right|thumb|Screenshot Eagle]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eagle&#039;&#039;&#039; ([[:Kategorie:Eagle|Artikel]]) ([https://cadsoft.io/de/ Homepage]) von CadSoft, inzwischen Autodesk, ist ein komplettes Paket mit Schaltplaneditor, Layoutprogramm und Autorouter. Das hat den Vorteil, dass man einen erstellten Schaltplan gleich zu einer Platine weiterverarbeiten kann.&lt;br /&gt;
&lt;br /&gt;
Mitgeliefert werden umfangreiche Symbol- bzw. Bauteilbibliotheken, von Widerständen in allen Bauformen über Taster bis hin zu [[AVR]]s. Eine Library für viele aktuelle AVRs findet sich im Download-Bereich &lt;br /&gt;
von [http://www.embedit.de www.embedit.de].&lt;br /&gt;
&lt;br /&gt;
Eagle läuft unter Linux, Windows (2000/XP/Vista/7/8/10) und Mac OS X. Ausgabedateien können direkt an die einschlägigen Hersteller geliefert werden.&lt;br /&gt;
&lt;br /&gt;
Eine für nichtkommerzielle Anwendungen kostenlose Version ist von [https://www.cadsoft.io CadSoft] erhältlich. Diese ist auf zweilagige Platinen im halben Euro-Format (80x100mm) sowie Schaltpläne mit nur einer Seite beschränkt.&lt;br /&gt;
&lt;br /&gt;
==== Autorouter ====&lt;br /&gt;
Der eher mäßige Autorouter funktioniert nur in der kommerziellen Version. Man kann aber den kostenlosen Autorouter von [http://www.freerouting.net www.freerouting.net] verwenden, die Eagle-brd Dateien dort importieren und als Eagle-session-script (.scr) wieder in Eagle importieren. Dabei auf die richtige Version des Eagle-ULP achten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stereobild-elektronik-3d.jpg|right|thumb|Rot-Grün-Stereo-Bild]]&lt;br /&gt;
==== 3D-Ansicht ====&lt;br /&gt;
Zum Betrachten des fertigen, bestückten Platinenentwurfs in Form eines 3D-Bilds bietet sich das nicht von CadSoft entwickelte Paket [https://sourceforge.net/projects/eagle3d.berlios/files/?source=navbar eagle3D] an. Mit Hilfe eines ULP wird eine Beschreibungsdatei für den Open Source Renderer &#039;&#039;POVray&#039;&#039; erzeugt, welche dann anschließend halbautomatisch generiert werden kann. Auch Bewegungsanimation und Kameraflug sind möglich. Es wird bereits eine große Zahl an Bauteilen unterstützt.&lt;br /&gt;
&lt;br /&gt;
Anwendungshinweise:&lt;br /&gt;
* [[Eagle im Hobbybereich]]&lt;br /&gt;
* [[:Kategorie:Eagle]]&lt;br /&gt;
* [http://gaussmarkov.net/wordpress/category/tools/software/eagle/ Eagle CAD Tutorial] im Blog &#039;&#039;gaussmarkov: diy fx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== TARGET 3001! ===&lt;br /&gt;
&lt;br /&gt;
[[Bild:target3001.png|right|thumb|Screenshot TARGET 3001!]]&lt;br /&gt;
&lt;br /&gt;
TARGET 3001! ([https://www.ibfriedrich.com/de/ Homepage]) für Windows (ME/NT4/2000/XP/Vista/Win7/Win8/Win10) bietet folgende Funktionen:&lt;br /&gt;
&lt;br /&gt;
* Schaltplan&lt;br /&gt;
* Bauteilerstellung &lt;br /&gt;
* Schaltungssimulation (PSPICE-Syntax)&lt;br /&gt;
* Platinen-Layout mit Autoplacement&lt;br /&gt;
* Autorouter ([http://konekt.com ELECTRA])&lt;br /&gt;
* Anzeige der Platine in 3D&lt;br /&gt;
* Frontplattenentwurf direkt an oder über der Platine&lt;br /&gt;
&lt;br /&gt;
Die Platinen-Layout-Software ist in deutscher, englischer oder französischer Sprache. Es gibt eine für nicht kommerzielle Anwendungen kostenlose Version: &#039;&#039;&#039;TARGET 3001! discover&#039;&#039;&#039; ist beschränkt auf 250 Pins/Pads, 2 Kupferlagen&lt;br /&gt;
und 30 Signale sind simulierbar, die Fläche ist unbeschränkt (1,2m x 1,2m).&lt;br /&gt;
&lt;br /&gt;
Auf der c&#039;t 11/07 CD ist eine &#039;&#039;&#039;SE Version&#039;&#039;&#039; von TARGET 3001! verfügbar, welche 400 Pins/Pads verarbeiten kann. &lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;PCB-Pool Edition&#039;&#039;&#039; hat keine Beschränkungen, speichert aber die Layouts in einem von normalen Target Versionen nicht lesbaren Format. Diese Layouts können dann allerdings nur zum selbst Ätzen ausgedruckt werden oder vom PCB-POOL® produziert werden.&lt;br /&gt;
&lt;br /&gt;
Links:&lt;br /&gt;
* [https://server.ibfriedrich.com/wiki/ibfwikide TARGET 3001 Wiki]&lt;br /&gt;
* [https://www.pcb-pool.com/ppde/service_downloads.html TARGET 3001 PCB-Pool-Edition]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TARGET 3001!&#039;&#039; bietet ein typisches Windows Look-And-Feel. Eine einfache Einführung findet sich &#039;&#039;&#039;[https://server.ibfriedrich.com/wiki/ibfwikide/index.php?title=Kurzeinführung2 hier]&#039;&#039;&#039;. Wer sich schon mit Eagle auskennt, kann auch &#039;&#039;&#039;[https://server.ibfriedrich.com/wiki/ibfwikide/index.php?title=Eagle hier]&#039;&#039;&#039; schauen. Es gibt kostenlosen direkten Service durch den Hersteller telefonisch oder per E-Mail auch für Einsteiger oder Demo-User.&lt;br /&gt;
&lt;br /&gt;
=== KiCad ===&lt;br /&gt;
[[Bild:kicad1.gif|right|thumb|Screenshot KiCad Schaltplan]]&lt;br /&gt;
&lt;br /&gt;
KiCad ([[KiCad|Artikel]]) ([http://kicad.org Homepage]) ist ein Paket aus Design-, Layout- und Routingprogramm. Damit können Schaltpläne gezeichnet, diese zu Platinen weiterentwickelt werden und das Ganze dann zur Fertigung der Leiterplatten im Gerber Format exportiert werden. Es existieren viele Hilfsprogramme wie z.B. zur Erstellung eigener Schaltplansymbole und von Bauteil Footprints für das Board, Import von Grafik für Logos, Gerberviewer ec.&lt;br /&gt;
Es existieren umfangreiche Bibliotheken für Schaltplansymbole und Footprints, sowie auch teilweise 3-D Modelle der Bauteile.&lt;br /&gt;
&lt;br /&gt;
Neben der mitgelieferten, bereits umfangreichen Bibliothek, die auch hier extern zugänglich ist (https://github.com/KiCad) gibt es auf vielen anderen Seiten weitere Bibliotheken zum Download, die einfach integriert werden können (siehe [[KiCad#Sonstige_Bibliotheken_im_Netz|KiCAD-Artikel]]). Die Erstellung und Vorhaltung von Symbolen, Footprints und 3D-Modellen ist aber mittlerweile wegen des enormen Umfanges seit 2015 ein eigenständiges Projekt, welches auf Gitub gehosted ist. Auf diese Footprintbibliotheken kann direkt aus dem Layoutprogramm zugegriffen werden, auch wenn dringend empfolen wird, eine lokale Arbeits- und Sicherungskopie anzulegen. Auch Symbolbibliotheken und 3D-Modelle können von dort bezogen werden. Selbstredend ist es auch einfach möglich, Symbole und Footprints mit KiCad selber zu erstellen. Für die Erstellung von 3D-Modellen sind andere Programme nötig. Doch auch hier besteht eine Anzahl von openSource Programmen, wie z.B. als primitives Beispiel Wings-3D.&lt;br /&gt;
&lt;br /&gt;
Eine KiCad Mailingliste findet sich unter http://groups.yahoo.com/group/kicad-users/. Die Anmeldung erfolgt erst, nachdem man vom Besitzer freigeschaltet wurde (wie üblich für die meisten Yahoo-Groups). Weitere User Foren sind hier aufgelistet: http://kicad.org/community/sites/#_forums&lt;br /&gt;
&lt;br /&gt;
Das KiCad Projekt wurde von Jean Pierre Charras gestartet und enthält eine Gruppe recht aktiver Entwickler. Es ist auf [http://de.wikipedia.org/wiki/Launchpad Launchpad] angesiedelt. Auch eine Nutzergruppe des [http://de.wikipedia.org/wiki/CERN CERN] beteiligt sich mit einem [https://code.launchpad.net/~cern-kicad/kicad/kicad-gal-orson branch] an der Weiterentwicklung von KiCad: [http://www.ohwr.org/projects/cern-kicad/wiki/WorkPackages Über die geplante Weiterentwicklung von KiCad (englisch)] und [http://home.web.cern.ch/about/updates/2015/02/kicad-software-gets-cern-treatment warum das CERN KiCad unterstützt (englisch)] . &lt;br /&gt;
&lt;br /&gt;
KiCad basiert auf wxWidgets und ist damit plattformübergreifend. Die Programme sind unter der GPL veröffentlicht und damit echte Open Source. KiCad darf frei benutzt werden und die Nutzer haben volle Rechte an ihren damit erstellten Schaltplänen und Layouts, auch für kommerzielle Nutzung. Im deutschsprachigen Raum existiert noch ein Zeichenprogramm für Elektrotechnik, welches auch kicad heißt, aber ein kommerzielles Projekt ist, und mit dem hier behandelten lediglich den Namen gemeinsam hat.&lt;br /&gt;
&lt;br /&gt;
Für Umsteiger von anderen Programmen sollten sich nach wenigen Stunden bereits die gleichen Ergebnisse erzielen lassen. Zum Erlernen kann man auf die Tutorials unter http://kicad.org/help/tutorials/ zurückgreifen. Ebenso findet sich hier unter [[KiCad]] eine umfangreiche FAQ (und Bibliothekssammlung). Das KiCad Projekt hat eine umfangreiche Dokumentation unter http://kicad.org/help/documentation/ in einigen verschiedenen Sprachen.&lt;br /&gt;
&lt;br /&gt;
Der Schaltplaneditor von KiCad verfügt über Möglichkeiten hierarchische Schaltpläne anzulegen. Etwas, das man nicht mehr missen möchte, nachdem man einmal damit gearbeitet hat. Obwohl ursprünglich nicht dafür gedacht, lässt sich dieses System nutzen, um aus vorgefertigten Teilschaltplänen einen Hauptschaltplan modular zusammenzusetzten. Eine Anleitung dazu findet sich hier: [[Media:HierarchischeSchaltplaeneAlsBausteineInKicad_RevC_23Dec2013.pdf]]&lt;br /&gt;
&lt;br /&gt;
Zur Simulation lässt sich ngSpice (http://ngspice.sourceforge.net/download.html) einbinden, so dass auch aus KiCad eine direkte Simulation aus dem Schema heraus möglich wird. Eine Anleitung befindet sich unter http://stffrdhrn.github.io/electronics/2015/04/28/simulating_kicad_schematics_in_spice.html.&lt;br /&gt;
&lt;br /&gt;
[[Bild:kicad2.gif|right|thumb|300px|Screenshot KiCad 3D-Ansicht]]&lt;br /&gt;
KiCad liefert eine schöne 3D-Ansicht des fertigen Layouts einschließlich der bestückten Bauteile, so dass man an dieser Stelle schon einmal einen Überblick bekommt, ob vielleicht nicht doch etwas vergessen wurde. Es gibt zwar nicht für alle Bauformen ein 3D-Modell, allerdings lassen sich diese selbst erstellen. Das 3D-Modell lässt sich exportieren, um es z.B. in mechanischen CAD-Systemen zu verwenden (Passt die Platine hinein? lässt sie sich montieren?).&lt;br /&gt;
[[Bild:DC-50Ohm_Terminierung_Downside.png|right|thumb|Unterseite eines Messadapters]]&lt;br /&gt;
[[Bild:DC-50Ohm_Terminierung_Upside.png|right|thumb|Oberseite eines Messadapters]]&lt;br /&gt;
&lt;br /&gt;
KiCad enthält eine Autoplacement und eine Autorouterfunktion, die aber leider nicht sehr effizient sind. Außerdem sind sie schlecht dokumentiert. Es lassen sich aber Netzlisten zum Export in mehrere verschiedene externe Autorouter erzeugen. Desweiteren lässt sich der bekannte Freeroute Autorouter im Netz direkt verwenden. Desweiteren können Netzlisten zum Export in Spice erzeugt werden.&lt;br /&gt;
Neuere KiCad Versionen enthalten allerdings einen sehr effizienten interaktiven Router. Dieser kann allerdings nur verwendet werden, wenn die Hardware und das Betriebssystem des Rechners aktuelle openGL Versionen unterstützt. Hier ein Video zur Benutzung des interaktiven Routers: https://www.youtube.com/watch?v=CCG4daPvuVI (aktueller: https://www.youtube.com/watch?v=QwxDOHjU2PA). Ebenso existiert ein Tool für &amp;quot;Different Pair matching&amp;quot; um Leiterbahnen gleicher Länge (Laufzeit) zu erzeugen. Siehe dazu dieses Video: https://www.youtube.com/watch?v=chejn7dqpfQ&lt;br /&gt;
&lt;br /&gt;
Eagle 6 Boarddateien können in KiCad eingelesen werden. Ebenso können Eagle &amp;quot;Packages&amp;quot; als Footprintbibliotheken in KiCad eingebunden werden. Auch gEDA Footprints können direkt als KiCad Footprint Bibliothek in PCBnew eingebunden werden. Diese Funktionen sind aber noch als experimentell zu bezeichnen.&lt;br /&gt;
&lt;br /&gt;
Des weiteren existieren eine Reihe von Konvertern, mit denen Daten anderer Platinenlayoutprogramme nach KiCad exportiert werden können. Eine Liste findet sich hier: [[KiCad#Konverter]]&lt;br /&gt;
&lt;br /&gt;
KiCad kann Gerberdaten wahlweise als &amp;quot;Extendet Gerber&amp;quot; oder im aktuellen [[Gerber-Tools#Aktuell:_Gerber_Version_2_.28X2.29|Gerber Version 2]] exportieren, die jeder seriöse Leiterplattenhersteller verarbeiten kann. KiCad ist mittlerweile soweit verbreitet, das viele Leiterplattenhersteller die KiCad-Board Daten auch direkt verarbeiten können, auch wenn das wegen der Fehleranfälligkeit keine empfehlenswerte Vorgehensweise ist.&lt;br /&gt;
&lt;br /&gt;
Das KiCad Packet enthält außerdem einen Gerberdatenviewer, der auch eingelesene Gerberdaten als Layout reimportieren kann. &lt;br /&gt;
Sauberes Gerber vorausgesetzt, kann KiCad damit gut für reverse Engeneering verwendet werden, in Fällen, wo nur noch die Gerberdaten einer Platine vorhansden sind.&lt;br /&gt;
&lt;br /&gt;
Außerdem zählt zum KiCad Packet ein &amp;quot;Leiterplattenrechner&amp;quot; mit dem z.B. Wellenwiderstände, Leiterbahnbreiten und Isolationsabstände bestimmt werden können.&lt;br /&gt;
&lt;br /&gt;
KiCad kann (Version Dezember 2015) Boards mit 32 Kupferlagen und die dazugehörigen Löttstop-, Umriss-, Lötpasten-, Kleber-, Silkscreen- etc. Lagen verarbeiten. Die mögliche Leiterplattengröße liegt über 2x2m. Damit ist eine deutlich größere Fläche als die von Einheitstafeln abgedeckt. Wer Platinen im oder über dem Einheitstafelnformat benötigt, wird Mühe aufwenden müssen, einen Hersteller dafür zu finden.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Kritikpunkt wäre, dass die offizielle Symbolbibliothek nur amerikanische, aber keine europäischen Schaltplansymbole enthält. Aber eine aktuelle Version einer europäischen Symbolbibliothek findet sich hier in  Mikrocontroller.de unter [[KiCad#Bibliotheken]]&lt;br /&gt;
unter SymbolsSimilarEN60617+oldDIN617-RevE8.lib&lt;br /&gt;
Diese enthält aber nicht nur EN60617 Symbole, sondern auch einige andere Symbole wie Logos für Gefahr, Hochspannung, ESD-Schutz und Dummy Symbole für Platinenumrisse, Fiducials, Messpunkte ec. Eine [https://www.mikrocontroller.net/wikifiles/7/77/Symbols_EN60617_13Mar2013.lib &amp;quot;gereinigte&amp;quot; EN60617 Bibliothek] findet sich am gleichen Ort unter Symbols_EN60617_13Mar2013.lib, zusammen mit einem &lt;br /&gt;
[https://www.mikrocontroller.net/wikifiles/e/e6/Symbols_EN60617_13Mar2013.pdf  PDF-Katalog der enthaltenen Symbole].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Einarbeitung in KiCad ist vergleichbar mit Eagle. Es hängt vermutlich von den individuellen Denkstrukturen ab, welches Programm man handlicher findet. Ein großer Vorteil sind die Dateiformate, welche alle reiner ASCII-Text sind. Dies macht die Entwicklung von externen Skripten zur Lösung von speziellen Aufgaben sehr leicht. Außerdem können die Dateien deswegen sehr einfach in Versionsverwaltungssystemen wie CVS verwaltet werden, was insbesondere die Entwickler größerer Projekte zu schätzen wissen.&lt;br /&gt;
Ein internes Skripting unter Python für KiCad ist in der Entwicklung. z.Z. kann es aber nur unter PCBnew verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[http://www.bigmessowires.com/2014/12/09/eagle-vs-kicad-revisited/ Und hier ein Link auf eine Kritik/Meinung (englisch)]&lt;br /&gt;
&lt;br /&gt;
== Schaltplan- und Leiterplattensoftware - Neulinge ==&lt;br /&gt;
&lt;br /&gt;
=== CircuitMaker ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://circuitmaker.com/ CircuitMaker]&#039;&#039;&#039; ist eine kostenfreie, cloudbasierte und vereinfachte Version des vollwertigen AltiumDesigner. Mehr zur Historie in der [https://en.wikipedia.org/wiki/CircuitMaker englischen Wikipedia].&lt;br /&gt;
&lt;br /&gt;
Der Funktionsumfang ist nicht jener von einem vollwertigen AltiumDesigner, aber viele Aspekte sind gleich.&lt;br /&gt;
So ist es auch möglich, Leiterbahnen mittels Hug &#039;n Shove zu verschieben oder komplexe DesignRules anzuwenden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cloud&#039;&#039;&#039;&lt;br /&gt;
Die Cloud beschränkt sich darauf, dass die eigenen Files dort abgelegt werden.&lt;br /&gt;
Grundsätzlich wäre die Idee, dass alle Community Mitglieder alle Projekte selbst benutzen und bearbeiten könnten. Wenn man jedoch das eigene Projekt nie &amp;quot;committed&amp;quot;, dann ist es auch nie sichtbar für andere Mitglieder. Zudem werden sämtliche Daten auch Lokal in einem Ordner abgelegt.&lt;br /&gt;
&lt;br /&gt;
=== DesignSpark PCB ===&lt;br /&gt;
&lt;br /&gt;
Integrierter Schaltplan-Editor mit Autorouter und Leiterplatten-Designer&amp;lt;br /&amp;gt;&lt;br /&gt;
DesignSpark PCB ist kostenlos auch für kommerzielle Projekte, allerdings nicht quelloffen (Open Source). Eine Registrierung des Users ist unbedingt erforderlich.&amp;lt;br /&amp;gt;&lt;br /&gt;
Unbegrenzte Leiterplattengröße, im Prinzip auch unbegrenzte Layer-Anzahl.&amp;lt;br /&amp;gt;&lt;br /&gt;
Bedienung ist etwas gewöhnungsbedürftig - leider z.Zt. nur als englische (u. chinesische) Version verfügbar. &amp;lt;br /&amp;gt;&lt;br /&gt;
Weitere Features: z.B. professionelle 3D-Designsoftware, Schnittstelle zu SPICE, Gerberausgabe direkt. Import von EAGLE-Datein möglich. &amp;lt;br /&amp;gt;&lt;br /&gt;
Kostenloser Download: http://www.rs-online.com/designspark/electronics/deu/page/designspark-pcb-home-page bzw. http://www.rs-online.com/designspark/electronics/deu/ &amp;lt;br /&amp;gt;&lt;br /&gt;
Erfahrungsbericht, der veralteten Version 3.0. Es existiert heute (2016) die Version 7.01: [http://www.ps-blnkd.de/Erfahrungsbericht_Schaltung&amp;amp;Leiterplatte.pdf] &amp;lt;br /&amp;gt;&lt;br /&gt;
Verschiedene Tutorials &amp;quot;DesignSpark Tipps &amp;amp; Tricks&amp;quot; in deutscher Sprache im &amp;quot;Elektor&amp;quot; 2014/2015.&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://de.wikipedia.org/wiki/DesignSpark_PCB Wikipedia Artikel zu DesignSpark]. DesignSpark PCB ist an den Bauteiledistributor [http://de.rs-online.com/web/generalDisplay.html?id=DesignSpark-Jan11 RS Components] angelehnt.&lt;br /&gt;
&lt;br /&gt;
=== DipTrace ===&lt;br /&gt;
&lt;br /&gt;
Diptrace besteht aus einem Schaltplan-, Layout-, Symbol- und Footprint-Programm.&amp;lt;br /&amp;gt;&lt;br /&gt;
Die Benutzer-Schnittstelle bietet pro Objekt (Symbol, Part, Pad, etc.) ein Kontext-Menü an. Dies ermöglicht oft eine unkomplizierte, geradlinige Bedienung. Trotzdem können grundlegende Arbeiten teils etwas umständlich und zweitaufwändig sein.&amp;lt;br /&amp;gt;&lt;br /&gt;
Die Programme bieten keine regelbasierten Konfigurationen oder (Script-)Programme. In andern Worten Diptrace ist wenig anpassbar.&amp;lt;br /&amp;gt;&lt;br /&gt;
Diptrace bietet ähnlich viele Funktionen wie Eagle.&amp;lt;br /&amp;gt;&lt;br /&gt;
Angeboten werden verschiedene Editionen auch für nichtkommerzielle Nutzung, siehe http://diptrace.com/buy/non-profit/&amp;lt;br /&amp;gt;&lt;br /&gt;
Die kleinste und komplett kostenlose non-profit Version ist aktuell (Juni 2016) auf zwei Lagen und 500 Pins beschränkt. Zum Vergleich: ICs mit 48 Pinnen sind keine Seltenheit. Es gibt aber auch verbilligte erweiterte und volle non-profit Lizenzen. Die strikte Forderung &amp;quot;non profit&amp;quot; verbietet implizit eine Veröffentlichung.&lt;br /&gt;
&lt;br /&gt;
Unterstützte Betriebssysteme: Windows (Linux mit Wine, funktioniert mit Debian 8 &amp;quot;Jessie&amp;quot; hervorragend), Mac OS X.&lt;br /&gt;
&lt;br /&gt;
[http://www.diptrace.com/ DipTrace.com (Homepage)]&lt;br /&gt;
&lt;br /&gt;
[https://www.mikrocontroller.net/topic/319636#new Forumsbeitrag/Diskussion über Diptrace (2014)]&lt;br /&gt;
&lt;br /&gt;
[https://www.mikrocontroller.net/topic/320897/ Geeignete Schaltplan und Layoutsoftware für Hobbyprojekte]&lt;br /&gt;
&lt;br /&gt;
=== Horizon ===&lt;br /&gt;
&lt;br /&gt;
Ein open source CAD Prorgramm in Entwicklung, aber schon recht weit fortgeschritten.&lt;br /&gt;
Siehe Diskussion und Verlauf im Forum: http://www.mikrocontroller.net/topic/417908#new&lt;br /&gt;
Horizon direkt con GitHub: https://github.com/carrotIndustries/horizon&lt;br /&gt;
&lt;br /&gt;
=== LibrePCB ===&lt;br /&gt;
&lt;br /&gt;
Ebenfalls ein OpenSource Schaltplan- und Layouteditor welcher in Entwicklung ist, aber durchaus sehr gut nutzbar für Projekte welche nicht allzu komplex sind. Die einfache, intuitive Bedienbarkeit der Software steht hier im Fokus, damit man praktisch ohne Einarbeitung innert kürzester Zeit ein PCB entwickeln kann. Aber auch technisch gibt es einige Vorteile gegenüber Konkurrenzsoftware, z.B. eine mächtigere Bauteilverwaltung (Symbole &amp;amp; Footprints), ein menschenlesbares Dateiformat (geeignet für Versionsverwaltung) und Plattformunabhängigkeit (läuft auf Windows, Linux, macOS und mehr).&lt;br /&gt;
&lt;br /&gt;
Mehr Infos und Download auf der Website: https://librepcb.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erweiterte Schaltplan- und Leiterplattensoftware ==&lt;br /&gt;
&lt;br /&gt;
Diese integrieren zusätzlich spezielle Funktionen, wie FPGA-Entwicklung oder impedanzkontrollierten Layouts. Sie eigenen sich mit langer Einarbeitungszeit und mindestens vierstelligem Preis nur, wenn man sehr viel damit arbeitet. Die Übergänge zu den &#039;&#039;Platzhirschen&#039;&#039; aus der vorherigen Kategorie sind fließend.&lt;br /&gt;
&lt;br /&gt;
=== Altium Designer ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Altium&#039;&#039;&#039; (aus Protel hervorgegangen) ist eine kommerzielle EDA Suite die umfangreiche Funktionen beinhaltet.&lt;br /&gt;
Neben den Klassikern wie Schaltplan und Layouterzeugung werden auch elektronische Simulationen, FPGA Entwicklungstools, und diverse andere Features per PlugIn vom Hersteller angeboten. Seit 2011 ist der Sitz in China, dort sind auch die Programmierer.&lt;br /&gt;
Leider ist der Produktzyklus momentan sehr kurz, sodass fast jährlich neue Hauptrelease erscheinen (aktuell 15.1) und in Abständen von 2-6 Monaten &amp;quot;Zwischenupdates&amp;quot; veröffentlicht werden.&lt;br /&gt;
&lt;br /&gt;
* Diverse Formate können importiert und exportiert werden, sodass man u.A. &amp;quot;fast&amp;quot; nahtlos mit MCAD Systemen kooperieren kann [https://docs.google.com/viewer?url=http://www.altium.com/files/training/Module%2020%20-%203D%20Mechanical%20CAD.pdf LINK]&lt;br /&gt;
* Diverse Funktionen für HighSpeed Designs [http://fplreflib.findlay.co.uk/articles/37941%5CHiSpeedDesignTutorialforAltiumDesigner_long.pdf LINK]&lt;br /&gt;
&lt;br /&gt;
Leider wurde der Preis in der jüngsten Vergangenheit des Öfteren nach oben korrigiert.&amp;lt;BR&amp;gt;&lt;br /&gt;
2014-04-11: Achtung Altium erhöht zum 31.6.2014 schon wieder die Preise und dieses Mal um satte 34% (4000€ auf 5400€!). Das entspricht einer Erhöhung um +68% in 5 Jahren.&lt;br /&gt;
&lt;br /&gt;
=== BAE ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B&#039;&#039;&#039;artels &#039;&#039;&#039;A&#039;&#039;&#039;uto &#039;&#039;&#039;E&#039;&#039;&#039;ngineer ([[BAE-Tutorial|Artikel]]) unterstützt die Erstellung von Schaltplänen, Leiterplatten und integrierten Schaltungen und läuft unter Windows, Linux und verschiedenen X11-/Unix-Systemen. Der Schaltplaneditor kann Pläne auf beliebig vielen Blättern erstellen, wobei auch hierarchische Strukturen möglich sind. Der Autorouter erzeugt recht brauchbare Ergebnisse, wobei beliebige Teile mit der Hand vorab geroutet werden können. Ein Autoplacer ist ebenfalls vorhanden.&lt;br /&gt;
&lt;br /&gt;
Eine auf Schaltplaneingabe beschränkte Version und eine kastrierte Evaluierungsversion sind auf der [https://www.bartels.de/bae/bae_de.htm BAE Homepage] downloadbar.&lt;br /&gt;
&lt;br /&gt;
Die [https://www.bartels.de/bae/baeprice_de.htm preiswerteste] kostenpflichtige Version ist das &#039;&#039;&#039;&#039;&#039;BAE Light&#039;&#039;&#039;&#039;&#039;. Diese Version ist auf Leiterplatten der Größe 180x120 mm² und auf 2 Lagen beschränkt, eine Beschränkung auf eine bestimmte Pinanzahl gibt es aber nicht.&lt;br /&gt;
&lt;br /&gt;
Ansonsten wird eine Economy-, Professional- und Highendversion angeboten, die jeweiligen Eigenschaften sind im Abschnitt [https://www.bartels.de/baedoc/inst_de.htm#BAEINST_BAE Bartels AutoEngineer Softwarekonfigurationen] erklärt. Interessant ist z.&amp;amp;nbsp;B. der Bauteilhöhencheck.&lt;br /&gt;
Mit dem &#039;&#039;&#039;&#039;&#039;BAE IC Design&#039;&#039;&#039;&#039;&#039; dringt man bis in den Bereich der IC- und ASIC-Entwicklung vor.&lt;br /&gt;
&lt;br /&gt;
=== Pulsonix ===&lt;br /&gt;
[http://www.pulsonix.com PULSONIX] ist ein Schaltplan- und Layout-Werkzeug mit [http://www.pulsonix.com/downloads/datasheets/Pulsonix%20FPGA.pdf integriertem FPGA-Interface] zum Import von Pindefinitionen, sowie [http://www.pulsonix.com/downloads/datasheets/Pulsonix%20Spice%20V2.0%20UK.pdf integriertem Schaltungssimulator] auf PSpice-Basis.&lt;br /&gt;
&lt;br /&gt;
== Hilfsprogramme ==&lt;br /&gt;
&lt;br /&gt;
=== Fped ===&lt;br /&gt;
&lt;br /&gt;
Ein quelloffenes Programm nur als Hilfestellung zum Erstellen von Footprints. Das spezielle daran ist eine Beschreibungssprache für Footprintdateien. Exportmöglichkeiten in [[KiCad]] (2010) und Postscript. [http://downloads.qi-hardware.com/people/werner/fped/gui.html Homepage]   ([http://projects.qi-hardware.com/index.php/p/fped/source/tree/master/manual alternative Fped Seite]) aber das Debian Projekt enthält mehr [https://packages.debian.org/sid/electronics/fped Nebeninformationen zu Fped]. Autor ist Werner Almesberger. Betreuer des Debian Paketes ist Xiangfu Liu.&lt;br /&gt;
&lt;br /&gt;
== Integrierte Elektronikentwicklung ==&lt;br /&gt;
Komplette Entwicklungsumgebungen, die praktisch alle Facetten der Elektronikentwicklung (EDA), also z.B. auch Gehäusebau, Unterstützung zur EMV-Simulation, Bauteil und Lieferantenverwaltung abbilden und sich damit hauptsächlich für große Unternehmen eignen:&lt;br /&gt;
&lt;br /&gt;
=== Orcad Cadence Design Systems ===&lt;br /&gt;
[https://de.wikipedia.org/wiki/Cadence_Design_Systems Wikipedia-Artikel]&lt;br /&gt;
=== Mentor Graphics ===&lt;br /&gt;
[https://de.wikipedia.org/wiki/Mentor_Graphics Wikipedia-Artikel]&lt;br /&gt;
=== Zuken ===&lt;br /&gt;
[https://de.wikipedia.org/wiki/Zuken Wikipedia-Artikel]&lt;br /&gt;
&lt;br /&gt;
== Software-Entwicklungen hier im Forum ==&lt;br /&gt;
&lt;br /&gt;
Zuweilen stellen Forenmitglieder Eigenentwicklungen aus diesem Bereich vor.  In diesem Abschnitt finden sich Links auf die entsprechenden Threads.&lt;br /&gt;
&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/417908 horizon]&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/351306 HobbyCi]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Schaltungssimulation]]&lt;br /&gt;
* [[Dos and don&#039;ts - Platinenlayout]]&lt;br /&gt;
* [[Lochrasterplatine]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schaltplaneditoren]]&lt;br /&gt;
[[Kategorie:Listen]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=92735</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=92735"/>
		<updated>2016-04-12T18:12:44Z</updated>

		<summary type="html">&lt;p&gt;Kami89: Hinweis zu PWM Signal hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks|Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo oder Nickel Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 7 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis  120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.&lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus (Regelungs-)Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wird das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
BLDC-Motoren werden deshalb meist explizit so konstruiert, dass sich mit Block-Kommutierung ein konstantes Drehmoment einstellen kann. Der ideale Kommutierungszeitpunkt ist eigentlich ein Kommutierungswinkel, der Kommutierungszeitpunkt unter anderem deshalb drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme. Die Feldschwächung hat Einfluss auf den Kommutierungszeitpunkt.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motors erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). Wird der uC Pin als Ausgang definiert (mit Low-Pegel), so wird das PWM-Signal mit dauerhaftem Low-Pegel &amp;quot;überschrieben&amp;quot; und der Treiber schliesst den Low-Side Mosfet. So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. Bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja keinen fertigen Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem; schwierig ist aber immer, den richtigen Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung per Timer (30° Verzögerung) ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Je nach Komplexität des BLDC Controllers und des damit verbundenen Programmieraufwands ist es aber auch möglich (wie von sehr vielen Nutzern implementiert) die Kommutierung direkt nach dem Analog-Komparator Interrupt auszulösen - d.h. mit 0° Verzögerung. In diesem Fall spricht man von Phasenvoreilender (phaseadvance) Ansteuerung. Der Motor kann dadurch eine höhere Maximaldrehzahl erreichen, jedoch mit geringerem Drehmoment - die Stromaufnahme ist höher und der Wirkungsgrad geringer (siehe [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf AN1083, Seite 18]). Der Effekt ist ähnlich dem Feldschwächebetrieb einer Asynchronmaschine.&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motors lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine. Übrigens ist es empfehlenswert, den Sollwert etwas zu &amp;quot;dämpfen&amp;quot;, damit keine schlagartigen Änderungen des Duty-Cycles erfolgen können. Vor allem schlagartige Abbremsmanöver können starke Überspannungsspitzen hervorrufen, die den Regler zerstören können!&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in Eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, sondern in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
Anmerkung JB: Gerade an einem Festplattenmotor getestet, bei Drehung von der Hand lassen bis zu 600mVss sinusförmig auf dem Oszilloskop blicken, Frequenz bis zu 20 Hz, muss sich um einen mehrpoligen Motor Handeln, so schnell hab ich nicht gedreht ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Es ist mitunter Hilfreich zum Starten eine Delay-Tabelle zu verwenden, damit braucht man sich nicht durch eine feste Frequenz-Vorgabe selbst zu bremsen. Dauert evtl. etwas beim Einstellen,&lt;br /&gt;
soll aber laut Atmel-Application-Note für BLCD-Motoren funktionieren. Den Rotor vorher noch durch Bestromen einer Phase und danach warten in eine definierte Anfangsposition drehen.&lt;br /&gt;
&lt;br /&gt;
=== Komparator ===&lt;br /&gt;
&lt;br /&gt;
Wenn man sich für die Kommutierungs-Erkennung per Analogkomparator entscheidet, muss man noch ein sehr nützliches Feature von den AVRs kennen. Da man ja abwechslungsweise drei verschiedene Signale (BEMF_A...C) mit der Mittelpunktspannung vergleichen muss, aber nur ein einziger Analogkomparator vorhanden ist, muss man den sogenannten Analog-Multiplexer benutzen. Mit diesem in den AVRs integrierten Multiplexer kann man nun die Spannung am Pin &amp;quot;AIN0&amp;quot; mit einem beliebigen Analogeingang (ADC0...ADC7) vergleichen. Natürlich kann man nicht mehrere Kanäle gleichzeitig anwählen, da es nur einen einzigen Komparator gibt. Das ist für unsere Anwendung allerdings kein Problem, wir müssen immer nur eines der BEMF-Signale mit der Mittelpunktspannung vergleichen.&lt;br /&gt;
&lt;br /&gt;
Näheres dazu und wie man den Multiplexer benutzt erfährt man im Datenblatt des verwendeten Mikrocontrollers. Der entsprechende Abschnitt heisst &amp;quot;Analog Comparator Multiplexed Input&amp;quot; (unter &amp;quot;Analog Comparator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über [[UART]], [[SPI]], [[I2C]] oder mit einem Potentiometer vorgeben. Welche Ansteuerung man wählt hängt davon ab, wie und wo der Motor eingesetzt werden soll und ist deshalb jedem selber überlassen.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während des geregelten Betriebs. Die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. Eine extrem kurze Geschichte, im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis? &lt;br /&gt;
Sieht so aus als würde für eine kurze Zeit Strom eingeprägt, um den Motor in eine definierte, stehende Position zu bringen. Danach wird weiter kommutiert. Der Motor dreht an, und es wird sofort über die BEMF kommutiert.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Steckern!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [[Sensorlose_BLDC_Ansteuerung]]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
* Drehzahlerfassung [http://www.mikrocontroller.net/topic/253539]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00885a.pdf BLDC Theorie(AN885 Microchip)]&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:BLDC_Spannungs_Diagramm.png&amp;diff=72847</id>
		<title>Datei:BLDC Spannungs Diagramm.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:BLDC_Spannungs_Diagramm.png&amp;diff=72847"/>
		<updated>2013-02-24T20:04:18Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:BLDC Spannungs Diagramm.png“ hochgeladen:&amp;amp;#32;Dieses Mal ohne die roten Linien unter den Wörtern ;-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Spannungsverlauf eines 3-Phasen BLDC. Selber gezeichnet.&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=68146</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=68146"/>
		<updated>2012-08-30T09:34:32Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Wünsche / Verbesserungsvorschläge / Bugreports ==&lt;br /&gt;
&lt;br /&gt;
Du hast Wünsche, Verbesserungsvorschläge oder einen Bug gefunden? Dann schau bitte zuerst in unsere TODO-Liste, ob nicht schon ein solcher Eintrag vorhanden ist: http://code.google.com/p/part-db/issues/list&lt;br /&gt;
&lt;br /&gt;
Ist kein entsprechender Eintrag in der TODO-Liste vorhanden, bitte kurz im Diskusionsthread schreiben worum es geht: http://www.mikrocontroller.net/topic/269289&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Online-Demo von Part-DB RW (zum ausprobieren): http://partdb.grautier.com/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/269289&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=68145</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=68145"/>
		<updated>2012-08-30T09:34:07Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Wünsche / Verbesserungsvorschläge / Bugreports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Wünsche / Verbesserungsvorschläge / Bugreports ==&lt;br /&gt;
&lt;br /&gt;
Du hast Wünsche, Verbesserungsvorschläge oder einen Bug gefunden? Dann schau bitte zuerst in unsere TODO-Liste, ob nicht schon ein solcher Eintrag vorhanden ist: http://code.google.com/p/part-db/issues/list&lt;br /&gt;
&lt;br /&gt;
Ist kein entsprechender Eintrag in der TODO-Liste vorhanden, bitte kurz im Diskusionsthread schreiben worum es geht: http://www.mikrocontroller.net/topic/269289&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Online-Demo von Part-DB RW (zum ausprobieren): http://partdb.grautier.com/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=67914</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=67914"/>
		<updated>2012-08-14T22:13:45Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.  &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wir das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
Im Fall der Block-Kommutierung ist der ideale Kommutierungszeitpunkt also der, bei dem das Stator-Feld dem Rotor-Feld im Mittel um 90 ° vorauseilt. Dieser ideale Kommutierungszeitpunkt ist wegen der als konstant angenommenen Rechenzeit für die Kommutierung drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung per Timer (30° Verzögerung) ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Je nach Komplexität des BLDC Controllers und des damit verbundenen Programmieraufwands ist es aber auch möglich (wie von sehr vielen Nutzern implementiert) die Kommutierung direkt nach dem Analog-Komparator Interrupt auszulösen - d.h. mit 0° Verzögerung. In diesem Fall spricht man von Phasenvoreilender (phaseadvance) Ansteuerung. Der Motor kann dadurch eine höhere Maximaldrehzahl erreichen, jedoch mit geringerem Drehmoment - die Stromaufnahme ist höher und der Wirkungsgrad geringer (siehe [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf AN1083, Seite 18]). Der Effekt ist ähnlich dem Feldschwächebetrieb einer Asynchronmaschine.&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine. Übrigens ist es empfehlenswert, den Sollwert etwas zu &amp;quot;dämpfen&amp;quot;, damit keine schlagartigen Änderungen des Duty-Cycles erfolgen können. Vor allem schlagartige Abbremsmanöver können starke Überspannungsspitzen hervorrufen, die den Regler zerstören können!&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Komparator ===&lt;br /&gt;
&lt;br /&gt;
Wenn man sich für die Kommutierungs-Erkennung per Analogkomparator entscheidet, muss man noch ein sehr nützliches Feature von den AVRs kennen. Da man ja abwechslungsweise drei verschiedene Signale (BEMF_A...C) mit der Mittelpunktspannung vergleichen muss, aber nur ein einziger Analogkomparator vorhanden ist, muss man den sogenannten Analog-Multiplexer benutzen. Mit diesem in den AVRs integrierten Multiplexer kann man nun die Spannung am Pin &amp;quot;AIN0&amp;quot; mit einem beliebigen Analogeingang (ADC0...ADC7) vergleichen. Natürlich kann man nicht mehrere Kanäle gleichzeitig anwählen, da es nur einen einzigen Komparator gibt. Das ist für unsere Anwendung allerdings kein Problem, wir müssen immer nur eines der BEMF-Signale mit der Mittelpunktspannung vergleichen.&lt;br /&gt;
&lt;br /&gt;
Näheres dazu und wie man den Multiplexer benutzt erfährt man im Datenblatt des verwendeten Mukrocontrollers. Der entsprechende Abschnitt heisst &amp;quot;Analog Comparator Multiplexed Input&amp;quot; (unter &amp;quot;Analog Comparator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über [[UART]], [[SPI]], [[I2C]] oder mit einem Potentiometer vorgeben. Welche Ansteuerung man wählt hängt davon ab, wie und wo der Motor eingesetzt werden soll und ist deshalb jedem selber überlassen.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00885a.pdf BLDC Theorie(AN885 Microchip)]&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=67021</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=67021"/>
		<updated>2012-06-25T21:08:05Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* TODO-Liste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Wünsche / Verbesserungsvorschläge / Bugreports ==&lt;br /&gt;
&lt;br /&gt;
Du hast Wünsche, Verbesserungsvorschläge oder einen Bug gefunden? Dann schau bitte zuerst in unsere TODO-Liste, ob nicht schon ein solcher Eintrag vorhanden ist: http://code.google.com/p/part-db/issues/list&lt;br /&gt;
&lt;br /&gt;
Ist kein entsprechender Eintrag in der TODO-Liste vorhanden, bitte kurz im Diskusionsthread schreiben worum es geht: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Online-Demo von Part-DB RW (zum ausprobieren): http://partdb.grautier.com/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=67001</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=67001"/>
		<updated>2012-06-24T15:17:29Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* TODO-Liste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
* Alle Tabellen (beim ersten Aufruf) automatisch erzeugen&lt;br /&gt;
* Ettikettendruck&lt;br /&gt;
** Siehe hier [http://www.mikrocontroller.net/attachment/116345/Bild1.png] und hier [http://www.mikrocontroller.net/attachment/85288/Dsc03369.jpg]&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Ein paar Gedanken zu Footprints und Dateiupload: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
** Die Auflistung der Footprints (Tools -&amp;gt; Footprints) sollte besser hierarchisch Dargestellt werden, damit nicht alle Bilder auf einmal geladen werden müssen (lange Ladezeit!). Als Struktur nimmt man am besten einfach genau die Verzeichnisstruktur. Wichtig ist aber auf der obersten Ebene ein Link auf &amp;quot;Alle Footprints&amp;quot;, damit man trotzdem alle Bilder auf einer Seite (so wie jetzt) anzeigen kann (wurde so gewünscht).&lt;br /&gt;
** Uploadfunktion für Footprint-Bilder hinzufügen&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
** Status laut TODO-Liste im SVN: Angefangen von &amp;quot;bubbles&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;). Optional sollte man aber den Dateinamen auch manuell angeben können.&lt;br /&gt;
** Falls die hochgeladene Datei ein sehr grosses Bild ist, sollte eine Abfrage kommen, ob das Bild automatisch verkleinert werden soll.&lt;br /&gt;
** Als Pfad für eine hochzuladene Datei sollte man auch eine URL auf irgendeine Datei im Internet angeben können, und die Datei soll dann automatisch auf den Server heruntergeladen werden (sehr nützlich z.B. bei einer Bildersuche im Internet, es ist kein Zwischenspeichern auf dem eigenen PC mehr nötig).&lt;br /&gt;
** Ein paar Gedanken zum ganzen Upload-Konzept: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
&lt;br /&gt;
* Nachfragen wie &amp;quot;Wirklich löschen?&amp;quot; alternativ per Javascript anstatt der Seite als Zwischenschritt, evtl. auch ganz deaktivierbar&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Online-Demo von Part-DB RW (zum ausprobieren): http://partdb.grautier.com/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66868</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66868"/>
		<updated>2012-06-14T20:49:31Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Ein paar Gedanken zu Footprints und Dateiupload: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
** Die Auflistung der Footprints (Tools -&amp;gt; Footprints) sollte besser hierarchisch Dargestellt werden, damit nicht alle Bilder auf einmal geladen werden müssen (lange Ladezeit!). Als Struktur nimmt man am besten einfach genau die Verzeichnisstruktur. Wichtig ist aber auf der obersten Ebene ein Link auf &amp;quot;Alle Footprints&amp;quot;, damit man trotzdem alle Bilder auf einer Seite (so wie jetzt) anzeigen kann (wurde so gewünscht).&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;). Optional sollte man aber den Dateinamen auch manuell angeben können.&lt;br /&gt;
** Falls die hochgeladene Datei ein sehr grosses Bild ist, sollte eine Abfrage kommen, ob das Bild automatisch verkleinert werden soll.&lt;br /&gt;
** Als Pfad für eine hochzuladene Datei sollte man auch eine URL auf irgendeine Datei im Internet angeben können, und die Datei soll dann automatisch auf den Server heruntergeladen werden (sehr nützlich z.B. bei einer Bildersuche im Internet, es ist kein Zwischenspeichern auf dem eigenen PC mehr nötig).&lt;br /&gt;
** Ein paar Gedanken zum ganzen Upload-Konzept: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66867</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66867"/>
		<updated>2012-06-14T20:42:36Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Ein paar Gedanken zu Footprints und Dateiupload: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;). Optional sollte man aber den Dateinamen auch manuell angeben können.&lt;br /&gt;
** Falls die hochgeladene Datei ein sehr grosses Bild ist, sollte eine Abfrage kommen, ob das Bild automatisch verkleinert werden soll.&lt;br /&gt;
** Als Pfad für eine hochzuladene Datei sollte man auch eine URL auf irgendeine Datei im Internet angeben können, und die Datei soll dann automatisch auf den Server heruntergeladen werden (sehr nützlich z.B. bei einer Bildersuche im Internet, es ist kein Zwischenspeichern auf dem eigenen PC mehr nötig).&lt;br /&gt;
** Ein paar Gedanken zum ganzen Upload-Konzept: http://www.mikrocontroller.net/topic/135284#2659447&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66866</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66866"/>
		<updated>2012-06-14T20:07:02Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;). Optional sollte man aber den Dateinamen auch manuell angeben können.&lt;br /&gt;
** Falls die hochgeladene Datei ein sehr grosses Bild ist, sollte eine Abfrage kommen, ob das Bild automatisch verkleinert werden soll.&lt;br /&gt;
** Als Pfad für eine hochzuladene Datei sollte man auch eine URL auf irgendeine Datei im Internet angeben können, und die Datei soll dann automatisch auf den Server heruntergeladen werden (sehr nützlich z.B. bei einer Bildersuche im Internet, es ist kein Zwischenspeichern auf dem eigenen PC mehr nötig).&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66865</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66865"/>
		<updated>2012-06-14T20:05:49Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;)&lt;br /&gt;
** Falls die hochgeladene Datei ein sehr grosses Bild ist, sollte eine Abfrage kommen, ob das Bild automatisch verkleinert werden soll.&lt;br /&gt;
** Als Pfad für eine hochzuladene Datei sollte man auch eine URL auf irgendeine Datei im Internet angeben können, und die Datei soll dann automatisch auf den Server heruntergeladen werden (sehr nützlich z.B. bei einer Bildersuche im Internet, es ist kein Zwischenspeichern auf dem eigenen PC mehr nötig).&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66864</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66864"/>
		<updated>2012-06-14T19:59:57Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
** Die Dateien sollen nach dem Upload, also auf dem Server, den gleichen Dateinamen bekommen wie die originale, hochgeladene Datei (keine &amp;quot;Zufallsnamen&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66863</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66863"/>
		<updated>2012-06-14T19:53:48Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
* Bilderupload durch einen universellen Dateiupload ersetzen (keine Einschränkungen bezüglich Dateityp), damit neben Bildern auch andere Dateien einem Bauteil zugeordnet werden können.&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66862</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66862"/>
		<updated>2012-06-14T19:49:28Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Neue Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
* Dateianhänge für Baugruppen (Für Datenblätter, Bilder, Schema, Layout, ...)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66861</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66861"/>
		<updated>2012-06-14T19:29:58Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
** Übergangslösung: Ich habe die part-db auf öffentlichem Webspace laufen, und habe mit .htpasswd und .htaccess eine Zugriffsbeschränkung eingeführt. So kann ich mehrere Nutzer mit eigenem Passwort autentifizieren, und habe die Sicherheit von Apache2 ohne große Arbeit. Wen Interesse besteht, kann ich gern ein paar Details zu hier aufschreiben. --damaltor&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
** Vielleicht können auch einfach alle Footprint-Bilder schon in der Liste der Footprints stehen, wenn man ein Teil anlegt?&lt;br /&gt;
&lt;br /&gt;
* Bestellinformationen:&lt;br /&gt;
** Jedem Bauteil sollen mehrere (unbeschränkt viele) Lieferanten zugeordnet werden können&lt;br /&gt;
** Zu jedem Lieferanten gehört jeweils die entsprechende Bestellnummer und der Preis&lt;br /&gt;
** Nähere Infos und Grafik gibts hier: http://www.mikrocontroller.net/topic/135284#2553805&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66843</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66843"/>
		<updated>2012-06-13T20:54:05Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* TODO-Liste */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Diskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können). Zur Diskussion gehts hier: http://www.mikrocontroller.net/topic/135284&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66842</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66842"/>
		<updated>2012-06-13T20:44:26Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Änderungen an vorhandenen Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Disskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können).&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
* Footprints&lt;br /&gt;
** Ein Footprint soll neu aus jeweils einem Kurznamen und einem Dateinamen bestehen&lt;br /&gt;
*** Beispiel für Dateineme: &amp;quot;IC_DIP28&amp;quot; (ohne Dateiendung)&lt;br /&gt;
*** Beispiel für den entsprechenden Kurznamen: &amp;quot;DIP28&amp;quot;&lt;br /&gt;
** In allen Tabellen ist jeweils nur der Kurzname sichtbar&lt;br /&gt;
** Der Dateiname wird nur für die automatische Zuordnung eines Footprint-Bildes gebraucht&lt;br /&gt;
** Das Anlegen eines neuen Footprints sollte folgendermassen ablaufen:&lt;br /&gt;
*** 1) (optional) Aus einer Auflistung aller Footprint-Bilder den entsprechenden Dateinamen auswählen&lt;br /&gt;
*** 2a) Falls ein Dateiname gewählt wurde: Als Kurzname wird automatisch alles hinter dem Underscore vom Dateinamen gewählt (kann aber manuell natürlich noch verändert werden)&lt;br /&gt;
**** Hinweis: Die Dateinamen der Footprint-Bilder sind praktisch alle so gewählt, dass alles hinter dem Underscore als vernünftigen Kurznamen verwendet werden kann. Der Teil vor dem Underscore ist mehr oder weniger nur dazu da, dass alle Dateinamen eindeutig bestimmt sind (auch rekursiv).&lt;br /&gt;
*** 2b) Falls kein Dateiname gewählt wurde, gibt man nun den Kurznamen einfach selber ein&lt;br /&gt;
*** Man wählt noch den übergeordneten Footprint&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66841</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66841"/>
		<updated>2012-06-13T20:05:35Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Neue Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Disskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können).&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
* Benutzerverwaltung&lt;br /&gt;
** Es sollen mehrere Benutzer angelegt werden können&lt;br /&gt;
** Beim (erstmaligen?) Aufruf der Seite wird Benutzername+Passwort verlangt&lt;br /&gt;
** Das System sollte genügend sicher sein, damit es auch ohne Bedenken auf einem (öffentlich zugänglichen) Webspace installiert werden kann&lt;br /&gt;
** Viele Details müssen noch ausgearbeitet werden. Grundsätzlich könnte man aber schonmal eine einfache Benutzerverwaltung inkl. Login-Screen einbauen. Dann wäre das System schonmal soweit bereit, dass es auf einem Webspace installiert werden kann. Den vollen Ausbau könnte man dann nach und nach noch ergänzen.&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66840</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66840"/>
		<updated>2012-06-13T19:43:39Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Feedback */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== TODO-Liste ==&lt;br /&gt;
&lt;br /&gt;
Für allfällige Wünsche/Verbesserungsvorschläge bitte kurz im Disskusionsthread schreiben, nicht einfach hier selber eintragen (damit die Entwickler das auch sicher mitbekommen und auch kommentieren können).&lt;br /&gt;
&lt;br /&gt;
=== Noch nicht bestätigt ===&lt;br /&gt;
&lt;br /&gt;
* Entnommene Teile Projekten zuordnen&lt;br /&gt;
** existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?&lt;br /&gt;
*** vielleicht direkt beim &amp;quot;normalen&amp;quot; Entnehmen von Beuteilen eine Auswahl der Baugruppen anzeigen, damit es direkter (ohne Umweg über die Baugruppen) geht?&lt;br /&gt;
&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
&lt;br /&gt;
=== Bestätigt, auf die Umsetzung wartend ===&lt;br /&gt;
&lt;br /&gt;
==== Neue Features ====&lt;br /&gt;
&lt;br /&gt;
* Auflistung was alles an einem bestimmten Lagerort sein sollte (z.B. als Untermenü &amp;quot;Zeige&amp;quot; -&amp;gt; &amp;quot;Teile nach Lagerort&amp;quot;)&lt;br /&gt;
* Changelog hinzufügen (vielleicht einfach auf die Startseite den RSS-Feed von Part-DB einfügen?)&lt;br /&gt;
&lt;br /&gt;
==== Änderungen an vorhandenen Features ====&lt;br /&gt;
&lt;br /&gt;
==== Bug-Fixes ====&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66839</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66839"/>
		<updated>2012-06-13T18:54:28Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Sonstiges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
== Sonstiges ==&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66838</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66838"/>
		<updated>2012-06-13T18:54:02Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Feedback */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66837</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66837"/>
		<updated>2012-06-13T18:53:45Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
&amp;lt;!-- UpdaterVers-0.1.4.0 http://www.mikrocontroller.net/attachment/63425/part-db.bz2 --&amp;gt;&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66836</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66836"/>
		<updated>2012-06-13T18:53:13Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Erledigt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
=== Patches ===&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
&amp;lt;!-- UpdaterVers-0.1.4.0 http://www.mikrocontroller.net/attachment/63425/part-db.bz2 --&amp;gt;&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66835</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66835"/>
		<updated>2012-06-13T18:44:33Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Funktionen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblattern, Preise, Bestellnummern, ...&lt;br /&gt;
* Baugruppenverwaltung&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Statistik&lt;br /&gt;
* Auflistung von: &amp;quot;Zu bestellende Teile&amp;quot;, &amp;quot;Teile ohne Preis&amp;quot; und &amp;quot;nicht mehr erhältliche Teile&amp;quot;&lt;br /&gt;
* Liste von Hersteller-Logos&lt;br /&gt;
* Informationen zu SMD-Beschriftungen von Widerstände, Kondensatoren und Spulen&lt;br /&gt;
* Widerstandsrechner&lt;br /&gt;
* Templatefähig mittels CSS&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
=== Erledigt ===&lt;br /&gt;
&lt;br /&gt;
=== Patches ===&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
&amp;lt;!-- UpdaterVers-0.1.4.0 http://www.mikrocontroller.net/attachment/63425/part-db.bz2 --&amp;gt;&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Labels.png&amp;diff=66834</id>
		<title>Datei:Labels.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Labels.png&amp;diff=66834"/>
		<updated>2012-06-13T18:03:53Z</updated>

		<summary type="html">&lt;p&gt;Kami89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66833</id>
		<title>Part-DB RW - Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Part-DB_RW_-_Lagerverwaltung&amp;diff=66833"/>
		<updated>2012-06-13T18:03:38Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die &amp;quot;Part-DB RW&amp;quot; Lagerverwaltung für Elektronikteile ist ein Web basierendes System zur Verwaltung elektronischer Bauteile. Das Original stammt von [http://www.cl-projects.de/projects/part-db/ CL-Projekts.de] und wird seit Anfang 2009 von [http://www.grautier.com/ K.J.(Theborg0815)] weitergeführt.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
&lt;br /&gt;
=== Lizenzmodell ===&lt;br /&gt;
&lt;br /&gt;
Mit Ausnahme des Java-Menü stehen alle Module unter der GPL. Das Java-Menü ist Bierware.  Somit ist eine kommerzielle Nutzung nur möglich, wenn es vom Ersteller des Menüs genehmigt wird.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen ===&lt;br /&gt;
&lt;br /&gt;
* Upload von Bauteil Bildern&lt;br /&gt;
* Automatische Anzeige von Footprintbildern&lt;br /&gt;
* Hersteller Logo Liste&lt;br /&gt;
* Template fähig mittels CSS &lt;br /&gt;
* Statistik&lt;br /&gt;
* Angabe von Lagerorten, Footprints, Kategorien, Lieferanten, Datenblatern, Preise, Bestellnummern, ...&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
&lt;br /&gt;
* Webserver mit ca. 10MB Platz &lt;br /&gt;
* PHP &amp;gt;4.1.2 (PHP5 angetestet, derzeit keine Fehler gefunden) (bei uns im produktiven Einsatz mit PHP5, keine Fehler bekannt. damaltor)&lt;br /&gt;
* Mysql Datenbank&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Voraussetzungen:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Ein Webserver ist auf dem System installiert, z.B. Apache2&amp;lt;br&amp;gt;&lt;br /&gt;
* MySQL ist auf dem System installiert&lt;br /&gt;
* zur Administration der Datenbank empfiehlt sich phpMyAdmin&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version von PartDB kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/51367/Part-DB-0.1.3b.tar.gz]&amp;lt;br&amp;gt;&lt;br /&gt;
Hier finden sich die neueren Release-Kandidanten:&lt;br /&gt;
[https://code.google.com/p/part-db/downloads/list]&lt;br /&gt;
&lt;br /&gt;
==== Anlegen der Datenbank ====&lt;br /&gt;
&lt;br /&gt;
* PhpMyAdmin starten und eine Datenbank part-db anlegen: [[Datei:Screenshot-4.png|right]]&lt;br /&gt;
* Tabellen anlegen:&lt;br /&gt;
** Den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** und unter &#039;&#039;Location of the text file&#039;&#039; die Datei createtables.sql angeben. (Die ist im PartDB-Installationsarchiv enthalten.)&lt;br /&gt;
** Go klicken&lt;br /&gt;
* Falls vorhanden, existierende Daten importieren&lt;br /&gt;
** Nochmal den Reiter &#039;&#039;Import&#039;&#039; anklicken&lt;br /&gt;
** Datendatei unter &#039;&#039;Location of the text file&#039;&#039; eingeben&lt;br /&gt;
** Go klicken&lt;br /&gt;
* MySql-User anlegen [[Datei:Screenshot-5.png|right]]&lt;br /&gt;
** Im Navigationsbereich &#039;&#039;Home&#039;&#039; klicken&lt;br /&gt;
** Dann den Link &#039;&#039;Privileges&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Add a new User&#039;&#039; klicken&lt;br /&gt;
** Dort mindestens die Angaben machen, die hier(Bild) zu sehen sind&lt;br /&gt;
** Unter &#039;&#039;&#039;Global privileges&#039;&#039;&#039; alle Kästchen unter &#039;&#039;&#039;Data&#039;&#039;&#039; ankreuzen&lt;br /&gt;
** Go klicken&lt;br /&gt;
&lt;br /&gt;
Hinweis für Fortgeschrittene: Datenbanken kann man auch mit MySQLDumper[http://www.mysqldumper.de/] oder auf der Kommandozeile (mysql part-db &amp;lt; readme/createtabels.sql) importieren.&lt;br /&gt;
&lt;br /&gt;
==== PartDB-Applikation installieren ====&lt;br /&gt;
&lt;br /&gt;
* Den Inhalt des Archivs Part-DB-x.y.z.tar.gz in das Serververzeichnis (unter Linux: /var/www ; unter Windows ???) entpacken&lt;br /&gt;
* Das Verzeichnis, das nun in www steht, nach &#039;&#039;part-db&#039;&#039; umbenennen&lt;br /&gt;
* .../www/part-db/config.php in einen Editor laden (.../www/part-db/lib.php in Version &amp;quot;part-db v0.1&amp;quot;) und in der Gegend von Zeile 50 folgende Änderungen machen:&lt;br /&gt;
** $link = mysql_connect (&amp;quot;localhost&amp;quot;, &amp;quot;part-db&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
** mysql_select_db (&amp;quot;part-db&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Damit ist PartDB installiert und kann im Browser aufgerufen werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Öffentliche Liste einrichten ====&lt;br /&gt;
&lt;br /&gt;
Am einfachsten geht es, wenn Ihr auf dem Server einen extra Ordner erstellt. In diesen kopiert Ihr die openlist.php und partdb.css.&lt;br /&gt;
In der openlist.php müsst Ihr dann noch den Pfad zur partdb.css und zur lib.php vollständig angeben.&lt;br /&gt;
&lt;br /&gt;
Alternativ könnt Ihr auch den Ordner ../partdb/openlist/ mit .htacsses wieder freigeben dieses klappt aber nur wenn der Webserver dieses erlaubt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Anleitung zum Bau eines PartDB-Servers in einer virtuellen Maschine ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Abschnitt hat noch Baustellenstatus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Voraussetzungen ====&lt;br /&gt;
&lt;br /&gt;
* VMware Server 2.0 oder ein ähnliches System ist installiert. (Kann von http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0 kostenlos heruntergeladen werden.)&lt;br /&gt;
&lt;br /&gt;
==== Aufbau des Servers unter VMware Server 2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Herunterladen der TurnKey Core Appliance von http://www.turnkeylinux.org/core&lt;br /&gt;
* Entpacken des Archivs in das Verzeichnis für virtuelle Maschinen&lt;br /&gt;
* Importieren der VM über das Browser-Applet für den VMware Server:&lt;br /&gt;
** &#039;&#039;&#039;Virtual Machine | Add Virtual Machine to Inventory&#039;&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Inventory&#039;&#039;&#039; &#039;&#039;Standard&#039;&#039; klicken&lt;br /&gt;
** Unter &#039;&#039;&#039;Content&#039;&#039;&#039; das Verzeichnis der zu importierenden VM doppelklicken&lt;br /&gt;
** Die .vmx-Datei anklicken und mit OK bestätigen&lt;br /&gt;
* Im &#039;&#039;&#039;Inventory&#039;&#039;&#039;-Bereich des Hauptfensters die neue VM auswählen und warten, bis rechts Daten und Befehle angezeigt werden.&lt;br /&gt;
* Rechts in der Mitte unter &#039;&#039;&#039;Commands&#039;&#039;&#039; den Link &#039;&#039;Power on&#039;&#039; anklicken.&lt;br /&gt;
* Den Reiter &#039;&#039;&#039;Console&#039;&#039;&#039; anklicken. Es öffnet sich ein Fenster mit schwarzem Hintergrund.&lt;br /&gt;
* In das schwarze Fenster klicken und warten, bis das Konsolfenster der VM aufgeht.&lt;br /&gt;
&lt;br /&gt;
Im Konsolfenster wird nach vollständigem Boot ein Dialog angezeigt, der im Wesentlichen die IP-Adresse der VM enthält, die in der Grundeinstellung über DHCP bezogen wird.&lt;br /&gt;
&lt;br /&gt;
Über den einzigen Menüpunkt dieses Dialogs kann &#039;&#039;später&#039;&#039; eine statische IP-Adresse eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die virtuelle Maschine kann je nach Host-Betriebsystem mit folgenden Programmen administriert werden:&lt;br /&gt;
&lt;br /&gt;
* Windos&lt;br /&gt;
** puTTY zum Einloggen in die VM&lt;br /&gt;
** WinSCP für den (höchst komfortablen) Dateitransfer&lt;br /&gt;
Beide Programme sind kostenlos auf dem Web zu finden&lt;br /&gt;
* Linux&lt;br /&gt;
** ssh zum Einloggen in die VM&lt;br /&gt;
** sftp für den Dateitransfer&lt;br /&gt;
&lt;br /&gt;
==== Vorbereiten der VM für PartDB ====&lt;br /&gt;
&lt;br /&gt;
* Einloggen in die VM über puTTY/ssh&lt;br /&gt;
** Nachladen der benötigten Zusatzmodule übers Web mit folgenden Befehlen&lt;br /&gt;
*** apt-get update&lt;br /&gt;
*** apt-get install mysql-server php5 phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Damit ist apache2, mysql, php5 und phpmyadmin installiert.&lt;br /&gt;
&lt;br /&gt;
Als erstes wird über Webmin der User part-db in der VM angelegt:&lt;br /&gt;
&lt;br /&gt;
* https://&amp;lt;ip-adresse der vm&amp;gt;:12321/&lt;br /&gt;
** &#039;System | Users and Groups&#039;&#039; klicken&lt;br /&gt;
** Den Link &#039;&#039;Create a new user.&#039;&#039; klicken&lt;br /&gt;
*** Username: part-db&lt;br /&gt;
*** User ID: Automatic&lt;br /&gt;
*** Real name: part-db&lt;br /&gt;
*** Create home directory? No  (Steht ganz unten!)&lt;br /&gt;
** Create-Button klicken&lt;br /&gt;
&lt;br /&gt;
Jetzt kann PhpMyAdmin im Browser des Hostsystems aufgerufen werden:&lt;br /&gt;
&lt;br /&gt;
* http://&amp;lt;ip-adresse der vm&amp;gt;/phpmyadmin&lt;br /&gt;
&lt;br /&gt;
Weiter geht es dann wie oben unter [http://www.mikrocontroller.net/articles/Part-DB_RW_-_Lagerverwaltung#Anlegen_der_Datenbank Anlegen der Datenbank] beschrieben, um die Datenbank anzulegen.&lt;br /&gt;
&lt;br /&gt;
Nach dem Abschnitt &#039;&#039;&#039;Anlegen der Datenbank&#039;&#039;&#039; wird hier fortgesetzt:&lt;br /&gt;
&lt;br /&gt;
Eine fertig konfigurierte virtuelle Maschine kann hier heruntergeladen werden: [http://www.mikrocontroller.net/attachment/63911/part-db.tar.bz2] Der Download ist mit gut 216 MB allerdings ziemlich fett.&lt;br /&gt;
&lt;br /&gt;
== Feedback ==&lt;br /&gt;
&lt;br /&gt;
=== Wunschliste ===&lt;br /&gt;
* Auflistung was an einem Lagerort sein sollte (für Inventur oder momentan schmeiß ich viel auf einen Dummy-Stellplatz, da ich die alten Bestellungen eingebe aber nicht auswendig weis wo die Teile liegen) (Dürfte nur eine SQL Abfrage sein) WICHTIG! :)&lt;br /&gt;
* Entnommene Teile Projekten zuordnen (existiert das nicht schon im Sinne der &amp;quot;Baugruppen&amp;quot;?)&lt;br /&gt;
* BUG: Ein Foto kann nicht ersetzt werden. Foto bei Anlegen des Teils mit hochgeladen, dann über bearbeiten ein neues Foto hinzufügen -&amp;gt; Foto wird hochgeladen, aber nicht ersetzt.&lt;br /&gt;
* Ich würde gern die Datenblatt-Link-Spalte überarbeiten:&lt;br /&gt;
** 1. NUR Icons. Auch für DC.&lt;br /&gt;
** 2. Umsortierung, erst Datenblattsuchmaschinen, dann Herstellerlink evtl in eine eigene Spalte. Also zB Alldatasheet | DatasheetCatalog (nutzt den eigentlich jemand?) | evtl Google-Link | Reichelt-Link | Hersteller-Link bzw. manuell eingetragener Link&lt;br /&gt;
** 3. Für die Icons würde ich das PDF-Symbol vorschlagen und darunter die Initialen schreiben, zB &amp;quot;AD&amp;quot; und &amp;quot;DC&amp;quot;, für Google das Google-G, für reichelt das reichelt-Logo, für den manuell eingetragenen link ????&lt;br /&gt;
** 4. bis hier hin sind die Änderungen Überschaubar. Ich hätte aber auch interesse daran, dass mehrere Links manuell hinterlegt werden können. z.B. gibt es für den AtXmega bis zu 4 Datenblätter. Wenn man dann zB für jeden dieser Links auch einen Titel festlegen kann, dann wäre das schön übersichtlich. Man könnte dann beispielsweise Datenblatt-kurzfassung, Datenblatt-Komplettfassung, Xmega Manual, Xmega Family overview usw. unabhängig voneinander mit verlinken. Diese Änderung kann ich nicht übersehen, denn mein php und sql ist ganz schön eingerostet... :D&lt;br /&gt;
** Wenn Interesse besteht kann ich gern die Änderung der Icons und die hinterlegung mit den Links wie unter 1-3 beschrieben vornehmen. -- damaltor&lt;br /&gt;
* Changelog!!&lt;br /&gt;
&lt;br /&gt;
=== Erledigt ===&lt;br /&gt;
&lt;br /&gt;
=== Patches ===&lt;br /&gt;
&lt;br /&gt;
=== Feedback ===&lt;br /&gt;
&amp;lt;!-- UpdaterVers-0.1.4.0 http://www.mikrocontroller.net/attachment/63425/part-db.bz2 --&amp;gt;&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Preissuchskript von Michael Buesch: [http://bu3sch.de/partdb-autoprice/]&amp;lt;br&amp;gt;&lt;br /&gt;
Die Beschreibung findet man hier: [http://www.mikrocontroller.net/topic/135284#1466454]&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Gallery&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Datei:partdb.png|Index Seite&lt;br /&gt;
Datei:list.png|Liste&lt;br /&gt;
Datei:bestelliste.png|Bestelliste&lt;br /&gt;
Datei:Baugruppe.png|Baugruppe&lt;br /&gt;
Datei:stats.png|Statistik&lt;br /&gt;
Datei:footprints.png|Footprints&lt;br /&gt;
Datei:iclogos.png|IC Logos&lt;br /&gt;
Datei:Labels.png|Labels&lt;br /&gt;
Datei:Widerstandsrechner.png|Widerstandsrechner&lt;br /&gt;
Datei:greenway.png| Anderes Theme (Greenway)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
Die Homepage des Org. Projektes finden Sie unter http://www.cl-projects.de/projects/part-db/.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
PART-DB RW Fork/Weiterentwicklung: http://www.grautier.com/grautier/index.php?/archives/77-Part-DB-V0.1.3-RW.html&amp;lt;br&amp;gt;&lt;br /&gt;
Diskussion: http://www.mikrocontroller.net/topic/135284#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Subversion repository: http://code.google.com/p/part-db/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Teileverwaltung von Gutmensch (App. basiert): http://www.mikrocontroller.net/topic/89071#new&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Elektronik Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, EXE für Windows &lt;br /&gt;
&amp;lt;br&amp;gt;PartKeepr: https://github.com/partkeepr/PartKeepr, [http://demo.partkeepr.org/ Demo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Widerstandsrechner.png&amp;diff=66832</id>
		<title>Datei:Widerstandsrechner.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Widerstandsrechner.png&amp;diff=66832"/>
		<updated>2012-06-13T18:01:25Z</updated>

		<summary type="html">&lt;p&gt;Kami89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Baugruppe.png&amp;diff=66831</id>
		<title>Datei:Baugruppe.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Baugruppe.png&amp;diff=66831"/>
		<updated>2012-06-13T18:01:02Z</updated>

		<summary type="html">&lt;p&gt;Kami89: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Stats.png&amp;diff=66830</id>
		<title>Datei:Stats.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Stats.png&amp;diff=66830"/>
		<updated>2012-06-13T17:58:28Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:Stats.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Iclogos.png&amp;diff=66829</id>
		<title>Datei:Iclogos.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Iclogos.png&amp;diff=66829"/>
		<updated>2012-06-13T17:58:07Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:Iclogos.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:List.png&amp;diff=66828</id>
		<title>Datei:List.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:List.png&amp;diff=66828"/>
		<updated>2012-06-13T17:57:43Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:List.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Footprints.png&amp;diff=66827</id>
		<title>Datei:Footprints.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Footprints.png&amp;diff=66827"/>
		<updated>2012-06-13T17:57:11Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:Footprints.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Bestelliste.png&amp;diff=66826</id>
		<title>Datei:Bestelliste.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Bestelliste.png&amp;diff=66826"/>
		<updated>2012-06-13T17:56:45Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:Bestelliste.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Partdb.png&amp;diff=66825</id>
		<title>Datei:Partdb.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Partdb.png&amp;diff=66825"/>
		<updated>2012-06-13T17:53:01Z</updated>

		<summary type="html">&lt;p&gt;Kami89: hat eine neue Version von „Datei:Partdb.png“ hochgeladen:&amp;amp;#32;Aktuellste Version von Part-DB&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66579</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66579"/>
		<updated>2012-05-30T16:11:13Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Schnittstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.  &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wir das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
Im Fall der Block-Kommutierung ist der ideale Kommutierungszeitpunkt also der, bei dem das Stator-Feld dem Rotor-Feld im Mittel um 90 ° vorauseilt. Dieser ideale Kommutierungszeitpunkt ist wegen der als konstant angenommenen Rechenzeit für die Kommutierung drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Laut Literatur liegt der optimale Kommutierungszeitpunkt 30° nach dem Nulldurchgang der Spannung am nicht beschalteten Eingang. Die naheliegendste Möglichkeit wäre also die Zeit, die bei der aktuellen Drehzahl für eine Umdrehung benötigt wird, durch zwölf zu dividieren und so lange bis zur Kommutierung zu warten.&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Komparator ===&lt;br /&gt;
&lt;br /&gt;
Wenn man sich für die Kommutierungs-Erkennung per Analogkomparator entscheidet, muss man noch ein sehr nützliches Feature von den AVRs kennen. Da man ja abwechslungsweise drei verschiedene Signale (BEMF_A...C) mit der Mittelpunktspannung vergleichen muss, aber nur ein einziger Analogkomparator vorhanden ist, muss man den sogenannten Analog-Multiplexer benutzen. Mit diesem in den AVRs integrierten Multiplexer kann man nun die Spannung am Pin &amp;quot;AIN0&amp;quot; mit einem beliebigen Analogeingang (ADC0...ADC7) vergleichen. Natürlich kann man nicht mehrere Kanäle gleichzeitig anwählen, da es nur einen einzigen Komparator gibt. Das ist für unsere Anwendung allerdings kein Problem, wir müssen immer nur eines der BEMF-Signale mit der Mittelpunktspannung vergleichen.&lt;br /&gt;
&lt;br /&gt;
Näheres dazu und wie man den Multiplexer benutzt erfährt man im Datenblatt des verwendeten Mukrocontrollers. Der entsprechende Abschnitt heisst &amp;quot;Analog Comparator Multiplexed Input&amp;quot; (unter &amp;quot;Analog Comparator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über [[UART]], [[SPI]], [[I2C]] oder mit einem Potentiometer vorgeben. Welche Ansteuerung man wählt hängt davon ab, wie und wo der Motor eingesetzt werden soll und ist deshalb jedem selber überlassen.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66578</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66578"/>
		<updated>2012-05-30T16:06:19Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Anlauf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.  &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wir das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
Im Fall der Block-Kommutierung ist der ideale Kommutierungszeitpunkt also der, bei dem das Stator-Feld dem Rotor-Feld im Mittel um 90 ° vorauseilt. Dieser ideale Kommutierungszeitpunkt ist wegen der als konstant angenommenen Rechenzeit für die Kommutierung drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Laut Literatur liegt der optimale Kommutierungszeitpunkt 30° nach dem Nulldurchgang der Spannung am nicht beschalteten Eingang. Die naheliegendste Möglichkeit wäre also die Zeit, die bei der aktuellen Drehzahl für eine Umdrehung benötigt wird, durch zwölf zu dividieren und so lange bis zur Kommutierung zu warten.&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Komparator ===&lt;br /&gt;
&lt;br /&gt;
Wenn man sich für die Kommutierungs-Erkennung per Analogkomparator entscheidet, muss man noch ein sehr nützliches Feature von den AVRs kennen. Da man ja abwechslungsweise drei verschiedene Signale (BEMF_A...C) mit der Mittelpunktspannung vergleichen muss, aber nur ein einziger Analogkomparator vorhanden ist, muss man den sogenannten Analog-Multiplexer benutzen. Mit diesem in den AVRs integrierten Multiplexer kann man nun die Spannung am Pin &amp;quot;AIN0&amp;quot; mit einem beliebigen Analogeingang (ADC0...ADC7) vergleichen. Natürlich kann man nicht mehrere Kanäle gleichzeitig anwählen, da es nur einen einzigen Komparator gibt. Das ist für unsere Anwendung allerdings kein Problem, wir müssen immer nur eines der BEMF-Signale mit der Mittelpunktspannung vergleichen.&lt;br /&gt;
&lt;br /&gt;
Näheres dazu und wie man den Multiplexer benutzt erfährt man im Datenblatt des verwendeten Mukrocontrollers. Der entsprechende Abschnitt heisst &amp;quot;Analog Comparator Multiplexed Input&amp;quot; (unter &amp;quot;Analog Comparator&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66542</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=66542"/>
		<updated>2012-05-27T14:36:13Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Oszillogramme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Diagramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC im Prinzip auch ist.  &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren heißt Block-Kommutierung und ist ein Kompromiss aus Aufwand und Ergebnis:&lt;br /&gt;
Idealerweise werden die Ströme im Stator so eingeprägt, dass der Statorfluss dem Rotorfluss immer um 90° vorauseilt. Nur so wir das ideale Drehmoment erzeugt (siehe Literatur zur permanenterregten Synchronmaschine). Allerdings hat dieses Verfahren, auch Feldorientierte Regelung oder Vektor-Regelung genannt, den Nachteil, dass meistens teure Positionssensorik für den Rotor nowendig ist und auch die nötige Rechenleistung stark ansteigt. Die komplette Regelung muss für jede PWM-Periode gerechnet werden, damit sich der Aufwand lohnt. &lt;br /&gt;
Im Fall der Block-Kommutierung ist der ideale Kommutierungszeitpunkt also der, bei dem das Stator-Feld dem Rotor-Feld im Mittel um 90 ° vorauseilt. Dieser ideale Kommutierungszeitpunkt ist wegen der als konstant angenommenen Rechenzeit für die Kommutierung drehzahlabhängig.&lt;br /&gt;
&lt;br /&gt;
Zur Erreichung einer höheren Maximaldrehzahl kann das Rotorfeld durch das Statorfeld im sogenannten Feldschwäch-Betrieb geschwächt werden. Es ergeben sich Feldschwäch-(Blind)ströme im Bereich der Nennströme.&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich kann auch ein BLDC nicht ohne Kenntnis der Lage des Rotors kommutiert werden. Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Mikrocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Laut Literatur liegt der optimale Kommutierungszeitpunkt 30° nach dem Nulldurchgang der Spannung am nicht beschalteten Eingang. Die naheliegendste Möglichkeit wäre also die Zeit, die bei der aktuellen Drehzahl für eine Umdrehung benötigt wird, durch zwölf zu dividieren und so lange bis zur Kommutierung zu warten.&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip eines Anlaufvorgangs eines sensorlosen BLDC ist folgendes:&lt;br /&gt;
- Man präge ein Feld ein, bei dem angenommen werden muss, dass der Motor diesem ab Stillstand auch folgt.&lt;br /&gt;
- Sobald diese Annahme durch Auftreten eines durch BEMF erzeugten Ereignisses bestätigt wird, kann in den geregelten Betrieb umgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass sie die beiden Zustände &#039;&#039;Low&#039;&#039; und &#039;&#039;High&#039;&#039; mit einer fast perfekten Geraden verbindet!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_ISE_Linux&amp;diff=65953</id>
		<title>Xilinx ISE Linux</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_ISE_Linux&amp;diff=65953"/>
		<updated>2012-04-27T13:34:49Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Digilent Plugin für Impact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installation ==&lt;br /&gt;
Hier sind zwei komplette Beschreibungen (auf englisch) was zu tun ist, um das ISE von Xilinx unter Linux zu installieren. Das ISE ist recht unproblematisch zu installieren, aber der CableDriver ist recht zickig.&lt;br /&gt;
*Gentoo: http://en.gentoo-wiki.com/wiki/Xilinx_ISE_WebPACK&lt;br /&gt;
*Debian: http://www.freelabs.com/~whitis/electronics/fpga/xilinx_install_deb3.1.html&lt;br /&gt;
*Ubuntu: https://help.ubuntu.com/community/XilinxISE&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die Installation von einem Linux System ins andere zu nehmen z.&amp;amp;nbsp;B. von Debian/32 zu Debian/64. Falls ISE nicht startet, mit strace nachsehen wo es hängt, meistens fehlen 32 bit lib&#039;s. Falls z.&amp;amp;nbsp;B. libuuid1 fehlt: die lib bei www.debian.de runterladen, mit dpkg -x entpacken und in /emul/ia32-linux/lib/ kopieren.&lt;br /&gt;
&lt;br /&gt;
===Nutzung des CableDrivers===&lt;br /&gt;
&lt;br /&gt;
Der CableDriver funktioniert nur mit einem älteren Kernel, da sich dessen Infrastruktur geändert hat. Daher empfiehlt sich der auf &#039;&#039;libusb&#039;&#039; basierende User-Space-Treiber von http://www.rmdir.de/~michael/xilinx/. Bei aktuellen (2010) Distributionen müssen beim selberkompilieren die Kompatibilitäts-Header für libusb-0.1 installiert sein.&lt;br /&gt;
&lt;br /&gt;
Da es speziell mit ubuntu edgy eft (Linux-Kernel 2.6.17) doch nicht ganz nach den Fahrplänen von oben funktioniert, hier ein paar Tipps:&lt;br /&gt;
&lt;br /&gt;
*Es muss der WinDriver in der Version 8.11 verwendet werden, die von Xilinx mitgelieferte Version ist zu alt: http://www.jungo.com/st/download/WD811LN.tgz (es wird nur der Teil aus WinDriver/redist gebraucht)&lt;br /&gt;
&lt;br /&gt;
*Ggf. muss im ./configure-script #!/bin/sh zu #!/bin/bash geändert werden. Außerdem sollte man Symlinks anlegen, wenn eine Datei fehlt&lt;br /&gt;
&lt;br /&gt;
===Impact und 64Bit Linux  mit CableServer===&lt;br /&gt;
&lt;br /&gt;
Mit der derzeitige Version von Impact (ISE8.2i) ist es nicht möglich unter einem 64Bit Linux direkt einen Parallel-Port-Programmer zu verwenden, da Impact ein Kernelmodul verwendet, welches nicht für 64Bit verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Stattdessen gibt es aber die Möglichkeit einen Remote-Programmer zu verwenden. Notwendig ist hierzu ein Server, der die Anfragen von Impact an den Parallel-Port-Programmer weiterleitet. Das erfreuliche ist, dass es diesen Server als OpenSource gibt, und er unter jedem Linux kompilierbar ist.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil der Cable-Server-Lösung ist, dass man den Win Driver nicht mehr benötigt und Impact von hausaus alle Xilinx-ICs unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine inoffizielle Version des cblsrv (Version enthält einen Bugfix für das Parallel-Cable-III) gibt es hier:&lt;br /&gt;
http://www.oxed.de/fpga/cblsrv-0.2-src.tar.bz2&lt;br /&gt;
&lt;br /&gt;
===ISE9.1 Impact und Cableserver===&lt;br /&gt;
Für die Verwendung des CableServers mit der ISE9.1 Version ist es unbedingt erforderlich mindestens auf SP3 upzudaten, da sich in Impact ein Fehler im Kommunikationsprotokol mit dem CableServer eingeschlichen hat!&lt;br /&gt;
&lt;br /&gt;
===Impact und 64Bit Linux mit WinDriver-Emulation===&lt;br /&gt;
Es ist auch möglich den in Impact integrierten (lokalen) Cableserver, ohne das WinDriver Kernelmodul, unter einem 64Bit Linux zu nutzen. Dazu benötigt man eine Library, die das Kernelmodul im Userspace emuliert. Die Library ist hier erhältlich: http://www.rmdir.de/~michael/xilinx/&lt;br /&gt;
&lt;br /&gt;
Da Impact als 32Bit Programm keine 64Bit Libraries laden kann, muss die Library als 32Bit Library kompiliert werden. Dazu muss im Makefile bei den CFLAGS zusätzlich -m32 angegeben werden (Beispiel: CFLAGS=-Wall -O2 -fPIC -m32). Alternativ kann eine 32Bit-chroot-Umgebung benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Zum Kompilieren benötigt man außerdem eine 32Bit Version der libusb.a [1]. Das Paket muss/kann nicht installiert werden, aber es reicht, wenn man es entpackt und aus der enthaltenen Datei data.tar.gz die libusb.a extrahiert und nach /usr/lib32/libusb.a kopiert. Danach sollte die Library erfolgreich kompilieren.&lt;br /&gt;
&lt;br /&gt;
Wenn man USB-JTAG-Kabel von Xilinx verwenden möchte, muss man sich auch noch eine 32Bit Version der libusb.so erzeugen, worauf man aber verzichten kann, wenn man nur ein Parallel-Cable-III verwendet.&lt;br /&gt;
&lt;br /&gt;
Beim Parallel-Cable-III benötigt man Schreibrechte auf /dev/parport0 (Benutzer zur Gruppe lp hinzufügen; Unter Ubuntu zusätzlich in der /etc/modules &amp;quot;lp&amp;quot; auskommentieren, damit man überhaupt ein /dev/parport0 hat). &lt;br /&gt;
&lt;br /&gt;
Zum Starten von impact empfiehlt es sich die Impact-Binärdatei in &amp;quot;impact_bin&amp;quot; umzubenennen und ein &amp;quot;impact&amp;quot; Script zu schreiben, welches so aussehen könnte: &amp;quot;export LD_PRELOAD=/path/to/libusb-driver.so &amp;amp;&amp;amp; /path/to/impact_bin&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Wenn man das ISE nutzt, empfielt es sich auch die ISE Binärdatei in &amp;quot;ise_bin&amp;quot; umzubenennen und ein Script &amp;quot;ise&amp;quot; analog zum Script &amp;quot;impact&amp;quot; anzulegen, da das ISE Impact nicht über das Script &amp;quot;impact&amp;quot; startet.&lt;br /&gt;
&lt;br /&gt;
[1]: http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/libusb-dev_0.1.12-2_i386.deb&lt;br /&gt;
(Ubuntu oder Debian)&lt;br /&gt;
&lt;br /&gt;
===Alternative für Impact===&lt;br /&gt;
&lt;br /&gt;
Wer mit Spartan3-Bausteinen arbeitet, könnte xc3sprog als Alternative für Impact verwenden. Finden kann man das Programm hier: http://www.rogerstech.force9.co.uk/xc3sprog/&lt;br /&gt;
Das Projekt wir auf Sourceforge weiterentwickelt. Neuerungen:&lt;br /&gt;
- XC95X, XC2C und Serial Flash programmierung bei XC3SA(N), XC3SE und XC6S&lt;br /&gt;
- mehr unterstützte Dateiformate&lt;br /&gt;
- Atmel AVR JTAG programmierung&lt;br /&gt;
- Mehr unterstützte Adapter, z.&amp;amp;nbsp;B. Xilinx DLC9/10, Amontec und Olimex&lt;br /&gt;
- Readback von CPLD und (Serial) Flash&lt;br /&gt;
- Bessere Platformunabhängigkeit&lt;br /&gt;
Aktuell unter:&lt;br /&gt;
svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog&lt;br /&gt;
oder nicht ganz so aktuell aber kompiliert:&lt;br /&gt;
http://sourceforge.net/projects/xc3sprog/&lt;br /&gt;
&lt;br /&gt;
===Digilent NEXYS2-Boards===&lt;br /&gt;
&lt;br /&gt;
Um den Onboard-Programmer auf Digilent NEXYS2-Boards zu verwenden gibt es hier Informationen:&lt;br /&gt;
http://www.fpgarelated.com/usenet/fpga/show/83878-1.php&lt;br /&gt;
&lt;br /&gt;
===Digilent Plugin für Impact===&lt;br /&gt;
Falls nach der Installation vom Digilent Plugin Xilinx Impact abstürzt (SegFault), sobald man &amp;quot;Cable Setup&amp;quot; anklickt, könnte [http://www.mikrocontroller.net/topic/254522#2653234 dieser Hinweis] hilfreich sein.&lt;br /&gt;
&lt;br /&gt;
===PDF Viewer (Could not find PDF Viewer)===&lt;br /&gt;
&lt;br /&gt;
Irgendwie hat Xilinx die Konfigurationsmöglichkeit für den PDF-Viewer vergessen.&lt;br /&gt;
Durch folgenden Eintrag in die .qt/xilinxrc verschwindet die Fehlermeldung &amp;quot;Could not find PDF Viewer&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
8.2i/Gq/PDFViewer=/usr/bin/xpdf %1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:222===&lt;br /&gt;
&lt;br /&gt;
Wer bei der Simulation die Fehlermeldung &amp;quot;ERROR:Simulator:222 - Generated C++ compilation was unsuccessful&amp;quot; erhält, sollte die Dateien&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld&lt;br /&gt;
./gnu/gcc/3.2.3/lin/bin/ld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
im Xilinx-Installationspfad umbenennen. Siehe auch:&lt;br /&gt;
http://groups.google.de/group/comp.arch.fpga/msg/3f6c44c16d3a3f85&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:170===&lt;br /&gt;
&lt;br /&gt;
Falls die Simulation mit der Fehlermeldung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR:Simulator:170 - work/counter/Behavioral is not compiled properly.&lt;br /&gt;
Please recompile work/counter/Behavioral in file&lt;br /&gt;
&amp;quot;C:/projects/Xilinx/tutorial2/counter.vhd&amp;quot; without -incremental option.&lt;br /&gt;
ERROR:Simulator:199 - Failed when handling dependencies for entity&lt;br /&gt;
counter_tbw, architecture testbench_arch &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
abbricht, kann dies ggf. daran liegen, dass der Pfad zu dem Projektverzeichnis ein Leerzeichen oder einen &#039;.&#039; enthält. Zumindest kann das manchmal Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:607===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR:Simulator:607 - ISE Simulator is unable to elaborate this design due to&lt;br /&gt;
specific coding constructs used in the design. Xilinx is actively working on&lt;br /&gt;
reducing the number of conditions where this error occurs. For more&lt;br /&gt;
information on this error, please consult Answer Record 24067 in Answers&lt;br /&gt;
Database at http://www.xilinx.com/support. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht ganz klar was das verursacht...&lt;br /&gt;
Bei mir liess er sich uebrreden es dennoch zu simulieren indem ich wahllos &lt;br /&gt;
synthetisiert / place n route / ... gemacht hab&lt;br /&gt;
Danach ging es aufeinmal...&lt;br /&gt;
Wobei ich auch noch die ld files gelöscht hab:&lt;br /&gt;
 ./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld&lt;br /&gt;
 ./gnu/gcc/3.2.3/lin/bin/ld&lt;br /&gt;
--Sssssss&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Xilinx ISE]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_ISE_Linux&amp;diff=65952</id>
		<title>Xilinx ISE Linux</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_ISE_Linux&amp;diff=65952"/>
		<updated>2012-04-27T13:32:36Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Digilent NEXYS2-Boards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Installation ==&lt;br /&gt;
Hier sind zwei komplette Beschreibungen (auf englisch) was zu tun ist, um das ISE von Xilinx unter Linux zu installieren. Das ISE ist recht unproblematisch zu installieren, aber der CableDriver ist recht zickig.&lt;br /&gt;
*Gentoo: http://en.gentoo-wiki.com/wiki/Xilinx_ISE_WebPACK&lt;br /&gt;
*Debian: http://www.freelabs.com/~whitis/electronics/fpga/xilinx_install_deb3.1.html&lt;br /&gt;
*Ubuntu: https://help.ubuntu.com/community/XilinxISE&lt;br /&gt;
&lt;br /&gt;
Es ist möglich die Installation von einem Linux System ins andere zu nehmen z.&amp;amp;nbsp;B. von Debian/32 zu Debian/64. Falls ISE nicht startet, mit strace nachsehen wo es hängt, meistens fehlen 32 bit lib&#039;s. Falls z.&amp;amp;nbsp;B. libuuid1 fehlt: die lib bei www.debian.de runterladen, mit dpkg -x entpacken und in /emul/ia32-linux/lib/ kopieren.&lt;br /&gt;
&lt;br /&gt;
===Nutzung des CableDrivers===&lt;br /&gt;
&lt;br /&gt;
Der CableDriver funktioniert nur mit einem älteren Kernel, da sich dessen Infrastruktur geändert hat. Daher empfiehlt sich der auf &#039;&#039;libusb&#039;&#039; basierende User-Space-Treiber von http://www.rmdir.de/~michael/xilinx/. Bei aktuellen (2010) Distributionen müssen beim selberkompilieren die Kompatibilitäts-Header für libusb-0.1 installiert sein.&lt;br /&gt;
&lt;br /&gt;
Da es speziell mit ubuntu edgy eft (Linux-Kernel 2.6.17) doch nicht ganz nach den Fahrplänen von oben funktioniert, hier ein paar Tipps:&lt;br /&gt;
&lt;br /&gt;
*Es muss der WinDriver in der Version 8.11 verwendet werden, die von Xilinx mitgelieferte Version ist zu alt: http://www.jungo.com/st/download/WD811LN.tgz (es wird nur der Teil aus WinDriver/redist gebraucht)&lt;br /&gt;
&lt;br /&gt;
*Ggf. muss im ./configure-script #!/bin/sh zu #!/bin/bash geändert werden. Außerdem sollte man Symlinks anlegen, wenn eine Datei fehlt&lt;br /&gt;
&lt;br /&gt;
===Impact und 64Bit Linux  mit CableServer===&lt;br /&gt;
&lt;br /&gt;
Mit der derzeitige Version von Impact (ISE8.2i) ist es nicht möglich unter einem 64Bit Linux direkt einen Parallel-Port-Programmer zu verwenden, da Impact ein Kernelmodul verwendet, welches nicht für 64Bit verfügbar ist.&lt;br /&gt;
&lt;br /&gt;
Stattdessen gibt es aber die Möglichkeit einen Remote-Programmer zu verwenden. Notwendig ist hierzu ein Server, der die Anfragen von Impact an den Parallel-Port-Programmer weiterleitet. Das erfreuliche ist, dass es diesen Server als OpenSource gibt, und er unter jedem Linux kompilierbar ist.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil der Cable-Server-Lösung ist, dass man den Win Driver nicht mehr benötigt und Impact von hausaus alle Xilinx-ICs unterstützt.&lt;br /&gt;
&lt;br /&gt;
Eine inoffizielle Version des cblsrv (Version enthält einen Bugfix für das Parallel-Cable-III) gibt es hier:&lt;br /&gt;
http://www.oxed.de/fpga/cblsrv-0.2-src.tar.bz2&lt;br /&gt;
&lt;br /&gt;
===ISE9.1 Impact und Cableserver===&lt;br /&gt;
Für die Verwendung des CableServers mit der ISE9.1 Version ist es unbedingt erforderlich mindestens auf SP3 upzudaten, da sich in Impact ein Fehler im Kommunikationsprotokol mit dem CableServer eingeschlichen hat!&lt;br /&gt;
&lt;br /&gt;
===Impact und 64Bit Linux mit WinDriver-Emulation===&lt;br /&gt;
Es ist auch möglich den in Impact integrierten (lokalen) Cableserver, ohne das WinDriver Kernelmodul, unter einem 64Bit Linux zu nutzen. Dazu benötigt man eine Library, die das Kernelmodul im Userspace emuliert. Die Library ist hier erhältlich: http://www.rmdir.de/~michael/xilinx/&lt;br /&gt;
&lt;br /&gt;
Da Impact als 32Bit Programm keine 64Bit Libraries laden kann, muss die Library als 32Bit Library kompiliert werden. Dazu muss im Makefile bei den CFLAGS zusätzlich -m32 angegeben werden (Beispiel: CFLAGS=-Wall -O2 -fPIC -m32). Alternativ kann eine 32Bit-chroot-Umgebung benutzt werden. &lt;br /&gt;
&lt;br /&gt;
Zum Kompilieren benötigt man außerdem eine 32Bit Version der libusb.a [1]. Das Paket muss/kann nicht installiert werden, aber es reicht, wenn man es entpackt und aus der enthaltenen Datei data.tar.gz die libusb.a extrahiert und nach /usr/lib32/libusb.a kopiert. Danach sollte die Library erfolgreich kompilieren.&lt;br /&gt;
&lt;br /&gt;
Wenn man USB-JTAG-Kabel von Xilinx verwenden möchte, muss man sich auch noch eine 32Bit Version der libusb.so erzeugen, worauf man aber verzichten kann, wenn man nur ein Parallel-Cable-III verwendet.&lt;br /&gt;
&lt;br /&gt;
Beim Parallel-Cable-III benötigt man Schreibrechte auf /dev/parport0 (Benutzer zur Gruppe lp hinzufügen; Unter Ubuntu zusätzlich in der /etc/modules &amp;quot;lp&amp;quot; auskommentieren, damit man überhaupt ein /dev/parport0 hat). &lt;br /&gt;
&lt;br /&gt;
Zum Starten von impact empfiehlt es sich die Impact-Binärdatei in &amp;quot;impact_bin&amp;quot; umzubenennen und ein &amp;quot;impact&amp;quot; Script zu schreiben, welches so aussehen könnte: &amp;quot;export LD_PRELOAD=/path/to/libusb-driver.so &amp;amp;&amp;amp; /path/to/impact_bin&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Wenn man das ISE nutzt, empfielt es sich auch die ISE Binärdatei in &amp;quot;ise_bin&amp;quot; umzubenennen und ein Script &amp;quot;ise&amp;quot; analog zum Script &amp;quot;impact&amp;quot; anzulegen, da das ISE Impact nicht über das Script &amp;quot;impact&amp;quot; startet.&lt;br /&gt;
&lt;br /&gt;
[1]: http://de.archive.ubuntu.com/ubuntu/pool/main/libu/libusb/libusb-dev_0.1.12-2_i386.deb&lt;br /&gt;
(Ubuntu oder Debian)&lt;br /&gt;
&lt;br /&gt;
===Alternative für Impact===&lt;br /&gt;
&lt;br /&gt;
Wer mit Spartan3-Bausteinen arbeitet, könnte xc3sprog als Alternative für Impact verwenden. Finden kann man das Programm hier: http://www.rogerstech.force9.co.uk/xc3sprog/&lt;br /&gt;
Das Projekt wir auf Sourceforge weiterentwickelt. Neuerungen:&lt;br /&gt;
- XC95X, XC2C und Serial Flash programmierung bei XC3SA(N), XC3SE und XC6S&lt;br /&gt;
- mehr unterstützte Dateiformate&lt;br /&gt;
- Atmel AVR JTAG programmierung&lt;br /&gt;
- Mehr unterstützte Adapter, z.&amp;amp;nbsp;B. Xilinx DLC9/10, Amontec und Olimex&lt;br /&gt;
- Readback von CPLD und (Serial) Flash&lt;br /&gt;
- Bessere Platformunabhängigkeit&lt;br /&gt;
Aktuell unter:&lt;br /&gt;
svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog xc3sprog&lt;br /&gt;
oder nicht ganz so aktuell aber kompiliert:&lt;br /&gt;
http://sourceforge.net/projects/xc3sprog/&lt;br /&gt;
&lt;br /&gt;
===Digilent NEXYS2-Boards===&lt;br /&gt;
&lt;br /&gt;
Um den Onboard-Programmer auf Digilent NEXYS2-Boards zu verwenden gibt es hier Informationen:&lt;br /&gt;
http://www.fpgarelated.com/usenet/fpga/show/83878-1.php&lt;br /&gt;
&lt;br /&gt;
===Digilent Plugin für Impact===&lt;br /&gt;
Falls nach der Installation vom Digilent Plugin Xilinx Impact abstürzt, sobald man &amp;quot;Cable Setup&amp;quot; anklickt, könnte [http://www.mikrocontroller.net/topic/254522#2653234 dieser Hinweis] hilfreich sein.&lt;br /&gt;
&lt;br /&gt;
===PDF Viewer (Could not find PDF Viewer)===&lt;br /&gt;
&lt;br /&gt;
Irgendwie hat Xilinx die Konfigurationsmöglichkeit für den PDF-Viewer vergessen.&lt;br /&gt;
Durch folgenden Eintrag in die .qt/xilinxrc verschwindet die Fehlermeldung &amp;quot;Could not find PDF Viewer&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
8.2i/Gq/PDFViewer=/usr/bin/xpdf %1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:222===&lt;br /&gt;
&lt;br /&gt;
Wer bei der Simulation die Fehlermeldung &amp;quot;ERROR:Simulator:222 - Generated C++ compilation was unsuccessful&amp;quot; erhält, sollte die Dateien&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld&lt;br /&gt;
./gnu/gcc/3.2.3/lin/bin/ld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
im Xilinx-Installationspfad umbenennen. Siehe auch:&lt;br /&gt;
http://groups.google.de/group/comp.arch.fpga/msg/3f6c44c16d3a3f85&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:170===&lt;br /&gt;
&lt;br /&gt;
Falls die Simulation mit der Fehlermeldung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR:Simulator:170 - work/counter/Behavioral is not compiled properly.&lt;br /&gt;
Please recompile work/counter/Behavioral in file&lt;br /&gt;
&amp;quot;C:/projects/Xilinx/tutorial2/counter.vhd&amp;quot; without -incremental option.&lt;br /&gt;
ERROR:Simulator:199 - Failed when handling dependencies for entity&lt;br /&gt;
counter_tbw, architecture testbench_arch &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
abbricht, kann dies ggf. daran liegen, dass der Pfad zu dem Projektverzeichnis ein Leerzeichen oder einen &#039;.&#039; enthält. Zumindest kann das manchmal Abhilfe schaffen.&lt;br /&gt;
&lt;br /&gt;
===ERROR:Simulator:607===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ERROR:Simulator:607 - ISE Simulator is unable to elaborate this design due to&lt;br /&gt;
specific coding constructs used in the design. Xilinx is actively working on&lt;br /&gt;
reducing the number of conditions where this error occurs. For more&lt;br /&gt;
information on this error, please consult Answer Record 24067 in Answers&lt;br /&gt;
Database at http://www.xilinx.com/support. &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nicht ganz klar was das verursacht...&lt;br /&gt;
Bei mir liess er sich uebrreden es dennoch zu simulieren indem ich wahllos &lt;br /&gt;
synthetisiert / place n route / ... gemacht hab&lt;br /&gt;
Danach ging es aufeinmal...&lt;br /&gt;
Wobei ich auch noch die ld files gelöscht hab:&lt;br /&gt;
 ./gnu/gcc/3.2.3/lin/i686-pc-linux-gnu/bin/ld&lt;br /&gt;
 ./gnu/gcc/3.2.3/lin/bin/ld&lt;br /&gt;
--Sssssss&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Xilinx ISE]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64372</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64372"/>
		<updated>2012-02-18T14:23:20Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Treiber */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (&#039;&#039;Low&#039;&#039;, &#039;&#039;High&#039;&#039; und &#039;&#039;Floating&#039;&#039;) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass man zwischen dieser Aufnahme und dem Diagramm oben ([[#Ansteuerung]]) eigentlich kein Unterschied mehr erkennen kann!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64348</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64348"/>
		<updated>2012-02-16T22:39:50Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* BEMF-Schaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen. Bei höheren Eingangsspannungen muss man darauf achten, dass die Eingänge vom AVR keine zu hohe Spannung abkriegen! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass man zwischen dieser Aufnahme und dem Diagramm oben ([[#Ansteuerung]]) eigentlich kein Unterschied mehr erkennen kann!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64347</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64347"/>
		<updated>2012-02-16T22:38:42Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* BEMF-Schaltung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das schauen dass die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass man zwischen dieser Aufnahme und dem Diagramm oben ([[#Ansteuerung]]) eigentlich kein Unterschied mehr erkennen kann!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64346</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64346"/>
		<updated>2012-02-16T22:31:56Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Oszillogramme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen (immer zwischen den Zuständen &amp;quot;PWM&amp;quot; und &amp;quot;LOW&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass man zwischen dieser Aufnahme und dem Diagramm oben ([[#Ansteuerung]]) eigentlich kein Unterschied mehr erkennen kann!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64345</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64345"/>
		<updated>2012-02-16T22:25:50Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Oszillogramme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM). Die BEMF ist jetzt sogar so steil, dass man zwischen dieser Aufnahme und dem Diagramm oben ([[#Ansteuerung]]) eigentlich kein Unterschied mehr erkennen kann!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64344</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64344"/>
		<updated>2012-02-16T21:39:18Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Wichtig sind auf jeden Fall [[#Die 6 Zustände]]. Der Mikrocontroller muss die Phasen jeweils nacheinander so wie in der Tabelle ansteuern. Das ist soweit ja kein Problem, schwierig ist aber immer der richtige Zeitpunkt für die Kommutierung zu finden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64343</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64343"/>
		<updated>2012-02-16T21:36:43Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Einsatz der BEMF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv &amp;lt;u&amp;gt;nicht&amp;lt;/u&amp;gt; ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt! In der Tabelle [[#Die 6 Zustände]] sieht man, welche zwei Spannungen der Komparator jeweils vergleichen muss.&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können. Näheres dazu im Abschnitt [[#Software]].&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64342</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64342"/>
		<updated>2012-02-16T21:10:54Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Die 6 Zustände */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
&#039;&#039;Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv nicht ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt!&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64341</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64341"/>
		<updated>2012-02-16T21:09:03Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Ansteuerung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die käuflichen Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen, wobei die gestrichelten Linien den Zustand &amp;quot;floating&amp;quot; symbolisieren. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint. Interessanterweise sehen die Spannungen aufgrund der BEMF aber tatsächlich ziemlich ähnlich aus wie im Dirgramm!&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
Hinweis: Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv nicht ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt!&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64340</id>
		<title>Brushless-Controller für Modellbaumotoren</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Brushless-Controller_f%C3%BCr_Modellbaumotoren&amp;diff=64340"/>
		<updated>2012-02-16T21:01:26Z</updated>

		<summary type="html">&lt;p&gt;Kami89: /* Um welche Motoren geht es hier nicht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Im Internet gibt es einige grundlegende Informationen zur Funktionsweise und Ansteuerung von Brushless-Motoren (BLDC). Für die Entwicklung eines solchen Reglers findet man aber nur wenig richtig detaillierte Informationen und Erfahrungsberichte. In diesem Artikel sollen genau diese Lücken geschlossen werden. Es soll hier aber kein fertiges Produkt (Schaltplan + Layout + Software) angeboten werden. Viel mehr soll es die Eigenentwicklung unterstützen, Ideen und Erfahrungen anbieten.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle weise ich noch darauf hin, dass man bei den [[#Weblinks]] noch einige sehr gute Informationen findet! Es gibt dort Hardware und Software, es lohnt sich die Links mal anzuschauen.&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es genau? ====&lt;br /&gt;
&lt;br /&gt;
Es geht hier um die sogenannten elektrisch kommutierten bürstenlosen Gleichstrommotoren (BLDC) aus dem Modellbaubereich. &lt;br /&gt;
&lt;br /&gt;
Deren Eigenschaften sind:&lt;br /&gt;
* Haben drei Anschlüsse für die drei Phasen, ansonsten sind keine weiteren Anschlüsse vorhanden&lt;br /&gt;
* Werden in der Regel mit LiPo Akkus versorgt&lt;br /&gt;
* Leistung im Bereich von ca. 100W bis 2kW&lt;br /&gt;
* Spannungen im Bereich von ca. 10 bis 50V&lt;br /&gt;
* Ströme im Bereich von ca. 5 bis 120A&lt;br /&gt;
&lt;br /&gt;
==== Um welche Motoren geht es hier nicht? ====&lt;br /&gt;
&lt;br /&gt;
* Motoren mit Hallsensoren für die Rückmeldung&lt;br /&gt;
* Festplattenmotoren&lt;br /&gt;
&lt;br /&gt;
Unter Umständen kann aber dieser Artikel auch für solche Motoren nützlich sein.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise dieser Motoren ==&lt;br /&gt;
&lt;br /&gt;
=== Ansteuerung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_Spannungs_Diagramm.png|thumb|right|250px|Ansteuerung der 3 Phasen]]&lt;br /&gt;
&lt;br /&gt;
Grundsätzlich werden die 3 Phasen nacheinander bestromt, die Phasenspannungen wären also drei um 120° phasenverschobene Rechteckspannungen. Ein sinusförmiger Drehstrom ist nicht nötig, es genügen Rechteckspannungen. Mit einer Raumzeigermodulation könnte man die Stromaufnahme und die Geräuschentwicklung zwar noch verringern, macht die Ansteuerung aber einiges aufwändiger. Sogar die gekauften Regler arbeiten nur mit Rechtecksignalen, zumindest die die ich kenne. &lt;br /&gt;
&lt;br /&gt;
Dabei gibt es für jede Phase die Zustände „Low“, „High“ und „Floating“. Low bedeutet 0V (GND), High entspricht der Versorgungsspannung und Floating ist keines von beidem, die Phase „hängt in der Luft“. Bei „High“ wird aber noch der Mittelwert der Spannung per PWM eingestellt, über das Tastverhältnis wird schlussendlich die Drehzahl verändert! Dazu aber später mehr.&lt;br /&gt;
&lt;br /&gt;
In der Grafik rechts kann man den Spannungsverlauf sehr gut erkennen. Das Diagramm zeigt aber nur den theoretischen Verlauf der Spannungen. In Wirklichkeit sehen sie etwa so aus: [[#Oszillogramme]]. Die gestrichelten Linien symbolisieren den Zustand &amp;quot;floating&amp;quot;. Dies kann man in einem Diagramm ja nicht wirklich darstellen, das ist einfach symbolisch gemeint.&lt;br /&gt;
&lt;br /&gt;
=== Die 6 Zustände ===&lt;br /&gt;
&lt;br /&gt;
Wie man erkennen kann, werden 6 Zustände gebraucht, die sich dann immer wiederholen. Die Kommutierung ist also einfach ein Weiterschalten des Zustandes. &lt;br /&gt;
Hinweis: Diese 6 Zustände sind nicht mit den drei Zuständen von oben (High, Low, Floating) zu verwechseln, das ist ein anderes Thema!&lt;br /&gt;
&lt;br /&gt;
In einer Tabelle dargestellt würde das folgendermassen aussehen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zustand || Phase A || Phase B || Phase C || Stromfluss || Komparator-Eingänge&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PWM || Floating || GND || A --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Floating || PWM || GND || B --&amp;gt; C || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || GND || PWM || Floating || B --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|-&lt;br /&gt;
| 4 || GND || Floating || PWM || C --&amp;gt; A || MITTEL &amp;lt;--&amp;gt; NULL_B&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Floating || GND || PWM || C --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_A&lt;br /&gt;
|-&lt;br /&gt;
| 6 || PWM || GND || Floating || A --&amp;gt; B || MITTEL &amp;lt;--&amp;gt; NULL_C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hinweise:&lt;br /&gt;
* Die Nummern in der ersten Spalte entsprechen genau den sechs Zuständen, die auch im obigen Diagramm nummeriert sind (Alle 6 Zustände zusammen bilden einen Zyklus, wie es auch im Diagramm dargestellt ist)&lt;br /&gt;
* Den Inhalt der letzten Spalte wird später noch erläutert. Die Bezeichnungen beziehen sich auf die [[#BEMF-Schaltung]].&lt;br /&gt;
&lt;br /&gt;
=== Einsatz der BEMF ===&lt;br /&gt;
Das schaut bis jetzt eigentlich wie ein Synchronmotor oder Schrittmotor aus, was ein BLDC aber definitiv nicht ist! &lt;br /&gt;
&lt;br /&gt;
Wie schon erwähnt wurde, wird ein BLDC elektronisch kommutiert. Das heisst, die Kommutierung wird nicht einfach stur vorgegeben, sondern es wird immer Rücksicht auf die Ankerposition genommen. Dazu muss man allerdings wissen, wann man die Kommutierung genau auslösen soll. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[Wer hat eine gute Erklärung, wo dieser ideale Zeitpunkt genau liegt?]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Und hier kommt die sogenannte Back Electromotive Force (BEMF) zum Einsatz. Von den drei Phasen liegt ja zu jedem Zeitpunkt genau eine Phase in der Luft wie man am Diagramm oben erkennen kann. Aufgrund des drehenden Magnetfeldes im Motor wird an dieser Phase nun eine Spannung induziert. Und genau diese induzierte Spannung gibt nun Auskunft darüber, in welchem Winkel sich der Anker befindet, und daraus kann man dann auch den Zeitpunkt der nächsten Kommutierung bestimmen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich wird aber auch noch die Sternmittelpunktspannung der drei Phasen benötigt, welche aber leider nicht direkt zur Verfügung steht. Das ist aber kein Problem, mit drei Widerständen kann man sich die selber erzeugen (siehe [[#BEMF-Schaltung]]).&lt;br /&gt;
&lt;br /&gt;
Jetzt sollten die BEMF-Spannungen die Sternmittelpunktspannung ständig kreuzen, was man dann mit einem Komparator erfassen kann. Und den Interrupt, den der Komparator auslöst, ist nun verantwortlich für die nächste Kommutierung.&lt;br /&gt;
Der Komparator wird natürlich nacheinander mit den drei Phasen gefüttert, es darf immer nur die Phase an den Komparator angeschlossen sein, die auch in der Luft hängt!&lt;br /&gt;
&lt;br /&gt;
Als Komparator kann man übrigens den integrierten nehmen, den es in den AVRs gibt. Diese (alle?) haben auch den benötigten Multiplexer, um zwischen den drei Analogquellen wählen zu können.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
=== Leistungsteil ===&lt;br /&gt;
&lt;br /&gt;
==== Treiber ====&lt;br /&gt;
&lt;br /&gt;
Um die drei notwendigen Zustände (wie oben beschrieben) für jede der drei Phasen realisieren zu können, werden drei Halbbrücken mit Mosfets benötigt. Hier gibt es dann auch schon mehrere Varianten, wie man das aufbauen kann. Grundsätzlich muss man sich mal überlegen ob fertige FET-Treiber oder diskrete Treiber verwendet werden sollen. Die FET-Treiber haben einige sehr schöne Vorteile, deshalb sollte man diese meiner Meinung nach bevorzugen.&lt;br /&gt;
&lt;br /&gt;
Die Vorteile wären:&lt;br /&gt;
&lt;br /&gt;
* Integrierter Kurzschlussschutz mit dead time, ein Softwarefehler kann die FETs nicht zerstören. Das kann in der Entwicklungsphase sehr von Vorteil sein :-)&lt;br /&gt;
* Die FETs können mit ordentlicher Geschwindigkeit geschaltet werden, und die Miktocontroller-Ports werden trotzdem nicht stark belastet. So kann die Wärmeentwicklung der FETs noch etwas reduziert werden.&lt;br /&gt;
* Bei Treibern die mit nur einem Eingang zwischen Lowside und Highside Mosfets toggeln (z.B. IR2104), ist der sogenannte „aktiver Freilauf“ bereits in Hardware realisiert und ermöglicht so mit wenig Aufwand eine extrem niedrige Erwärmung der Mosfets. Das ermöglicht schon sehr grosse Ströme auch ohne Kühlkörper!&lt;br /&gt;
* Es können günstigere Mosfets verwendet werden, es müssen keine TTL-Kompatible FETs sein. Auch ist eine niedrige Gatekapazität nicht so von Bedeutung wie bei direkter Ansteuerung mit einem Mikrocontroller.&lt;br /&gt;
* Je nach dem welchen Treiber man verwendet, kann der Softwareaufwand und die Fehleranfälligkeit deutlich reduziert werden.&lt;br /&gt;
&lt;br /&gt;
Nachteile von Treiber sind:&lt;br /&gt;
&lt;br /&gt;
* Mehr Bauteile auf der Platine.&lt;br /&gt;
* Vermutlich insgesamt etwas teurer, auch wenn die FETs günstiger sind.&lt;br /&gt;
* Bei vielen Treibern ist eine Minimalspannung von ca. 10V notwendig, damit sie funktionieren. Bei einem fast leeren 3S LiPo Akku könnte das vielleicht schon kritisch werden. Auch darf z.B. beim IR2104 eine Spannung von 20V nicht überschritten werden. Daher kommt (ohne StepUp und StepDown Wandler) eigentlich fast nur noch ein 4S Akku in Frage. Möchte man einen grösseren Eingangsspannungsbereich haben muss man noch entsprechende Spannungsregler einbauen.&lt;br /&gt;
&lt;br /&gt;
Ich persönlich habe es schon mit einem IR2104S probiert, dieser erscheint mir sehr geeignet für diese Aufgabe. Ich betreibe ihn mit einem 4S LiPo, damit läuft das Teil perfekt. Kann ich nur weiterempfehlen!&lt;br /&gt;
&lt;br /&gt;
==== Beispielschaltung ====&lt;br /&gt;
[[Datei:BLDC_Leistungsteil_1.png|thumb|right|300px|Beispiel einer Halbbrücke inklusive Strommessung]]&lt;br /&gt;
Hier ein Beispiel, wie der Leistungsteil einer Phase aussehen könnte.&lt;br /&gt;
&lt;br /&gt;
Für die exakte Beschaltung der Treiber muss man natürlich dessen Datenblatt studieren!&lt;br /&gt;
&lt;br /&gt;
Hier sieht man auch gleich noch die Strommessung, die man natürlich nicht für jede Phase einzeln aufbauen muss. Man kann sie sogar ganz weglassen, sie könnte aber nützlich sein um eine Überlast des Motores erkennen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Widerstand R20 ist dazu da, dass auf dem Treiber das PWM-Signal liegt, sobald die Leitung „IN_A“ in der Luft hängt (uC Pin als Eingang definiert). So wird nur ein einziger PWM-Ausgang vom Mikrocontroller benötigt für alle drei Phasen, erfordert also kein Soft-PWM oder sonst irgend ein Murks. Diese Schaltung habe ich übrigens beim Mikrokopter-Projekt abgeschaut.&lt;br /&gt;
&lt;br /&gt;
Übrigens muss an die Versorgung unbedingt noch ein grosser Elko gehängt werden, am besten möglichst nahe an die Mosfets (keine langen Leitungen zwischen Elko und Mosfets). Die erforderliche Kapazität hängt davon ab, wieviel Strom der Motor braucht. bei kleinen bis mittleren Motoren sollten so 220uF bis 680uF ausreichend sein.&lt;br /&gt;
&lt;br /&gt;
=== BEMF-Schaltung ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:BLDC_BEMF_schaltung.png|thumb|right|300px|BEMF-Schaltung]]&lt;br /&gt;
&lt;br /&gt;
Ein wichtiger Teil ist aber auch die BEMF-Schaltung. Dabei wird häufig die Schaltung vom Mikrokopter eingesetzt (siehe Schaltung rechts).&lt;br /&gt;
&lt;br /&gt;
Die Schaltung besteht erstmal aus drei Spannungsteilern, die die Phasenspannungen auf ein Spannungsniveau heruntersetzen, das man auf die Mikrokontrollereingänge legen darf. Keramikkondensatoren glätten diese Spannungen, weil die aufgrund der PWM sonst sehr stark ausschlagen. Dann gehen diese drei Spannungen (&#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039;) auf drei ADC-Eingänge des Mikrocontrollers.&lt;br /&gt;
&lt;br /&gt;
Und dann sind da noch die drei Widerstände, die aus den Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; einen virtuellen Sternmittelpunkt bilden. Diese Mittelpunktspannung (&#039;&#039;MITTEL&#039;&#039;) kommt dann auf den Komparatoreingang &#039;&#039;AIN0&#039;&#039; vom AVR. Diese Spannung soll der Komparator später dann mit jeweils einer der Spannungen &#039;&#039;NULL_A&#039;&#039;, &#039;&#039;NULL_B&#039;&#039; und &#039;&#039;NULL_C&#039;&#039; vergleichen um den Kommutierungszeitpunkt bestimmen zu können.&lt;br /&gt;
&lt;br /&gt;
Man kann die Widerstands-/ und Kapazitätswerte auch noch anpassen, bei höheren Eingangsspannungen muss man das sogar damit die Eingänge vom AVR keine zu hohe Spannung abkriegt! Ein Regler, den ich gekauft habe, hat einiges höhere Widerstandswerte und kommt sogar ohne Kondensatoren aus. Hier hat man also durchaus noch Spielraum um ein bisschen zu tüfteln, für den Anfang ist die abgebildete Schaltung aber bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
=== Mikrocontroller ===&lt;br /&gt;
&lt;br /&gt;
Als Mikrocontroller sind viele Typen aus der AVR-Serie geeignet. Bei der BrushlessCtrl wird zum Beispiel ein ATMega168 eingesetzt. Mit diesem habe ich auch mal angefangen, der scheint wirklich gut geeignet zu sein. Es reicht aber auch ein ATMega88 wenn man nicht alle möglichen Protokolle und Ansteuerungsarten (I2C, SPI, PPM) gleichzeitig einbauen will.&lt;br /&gt;
&lt;br /&gt;
Viele Regler verwenden auch einen AT90PWM, vorallem wenn mehrere PWM-Kanäle gebraucht werden.&lt;br /&gt;
&lt;br /&gt;
Übrigens wird bei käuflichen Reglern extrem häufig ein ATMega8 eingesetzt! Wenn man nur Software entwickeln möchte kann man auch einen solchen Regler kaufen und das eigene Programm aufspielen. Bei den [[#Weblinks]] findet man dazu auch noch Informationen.&lt;br /&gt;
&lt;br /&gt;
Um eine Raumzeigermodulation zu implementieren wird dann aber vermutlich schon ein 32-Bit Mikrocontroller nötig sein. Aber wie schon erwähnt ist für ein Modellbaumotor eine Raumzeigermodulation keinesfalls ein must-have.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Bei der Software kommt es jetzt natürlich sehr stark darauf an, wie die Hardware aufgebaut ist. Ich möchte hier aber nicht auf jede Variante eingehen, das gäbe viel zu viel Arbeit. Auch will ich ja kein fertiger Code bereitstellen, sondern nur Hinweise und Tipps geben. Wer nicht selber programmieren will, der kann ja mal die Mikrokopter-Firmware herunterladen, die älteren Versionen davon gibt es auf der Mikrokopter-Seite zum downloaden.&lt;br /&gt;
&lt;br /&gt;
Falls man einen IR2104 oder einen ähnlichen Treiber verwendet, würde die Software ungefähr so aussehen:&lt;br /&gt;
&lt;br /&gt;
* Beim Programmstart wird schonmal der PWM-Ausgang mit einem Timer aktiviert. Die Frequenz liegt normalerweise so im Bereich 12 bis 25kHz. Ich selber verwende 20kHz, da hört man dann auch dieses Pfeifen nicht mehr.&lt;br /&gt;
* Der Interrupt vom Analogkomparator muss aktiviert werden, um die Kommutierungszeitpunkte bestimmen zu können.&lt;br /&gt;
* Dann habe ich eine Funktion, welche den Zustand (1 bis 6) eins weiterschaltet und die Ausgänge entsprechend setzt. Dabei werden die Pins, die das PWM-Signal enthalten sollen, einfach als Eingang definiert, wie ich schonmal erwähnte.&lt;br /&gt;
* Wichtig ist ausserdem, dass bei jeder Kommutierung auch noch der richtige ADC-Kanal auf den Komparator geleitet wird per Multiplexer. Dieser Kanal wird bei jeder Kommutierung eins weitergeschaltet.&lt;br /&gt;
* Danach muss nur noch gewartet werden bis der Analogkomparator einen Interrupt auslöst. Sobald dies geschieht, wird die nächste Kommutierung ausgelöst, und das Spiel beginnt wieder von vorne.&lt;br /&gt;
&lt;br /&gt;
Ich glaube aber, dass dies noch nicht die ganz richtige Art ist, wie man die Kommutierung auslöst. Ich denke, man müsste nach einem Interrupt eine gewisse Zeit warten (je nach Kommutierungswinkel oder wie das heisst) und erst kurz vor dem nächsten Interrupt die Kommutierung auslösen. Also quasi immer einen Zustand später. Dazu muss aber die Verzögerungszeit ständig ausgerechnet werden, damit die auch bei jeder Drehzahl stimmt. Ich habe es selber noch nicht so implementiert, kann daher nicht sagen ob das so dann richtig funktioniert. &#039;&#039;&#039;Falls hier jemand besser Bescheid weiss, wäre es cool wenn man das hier noch ergänzen könnte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ausserdem scheint es auch Regler zu geben, die eine Kommutierung nicht mit dem Analogkomparator erfassen, sondern direkt mit ADC-Wandlungen. Dazu weiss ich aber leider auch nichts näheres, deshalb auch hier: &#039;&#039;&#039;Wenn jemand weiss, was es damit auf sich hat, bitte melden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Drehzahl des Motores lässt sich jetzt ganz bequem ändern, indem man den Duty-Cycle des PWM-Signales verändert. Der Motor beschleunigt bzw. bremst dann von alleine.&lt;br /&gt;
&lt;br /&gt;
=== Anlauf ===&lt;br /&gt;
&lt;br /&gt;
So, das war jetzt die Beschreibung für einen Motor, der bereits läuft. &#039;&#039;&#039;Bis&#039;&#039;&#039; der Motor allerdings mal dreht, muss man anders vorgehen, weil der stillstehende Motor ja keine Komparator-Interrupts auslöst, da keine BEMF vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Daher muss man den Motor zuerst mit einem starren Drehfeld auf eine gewisse Drehzahl beschleunigen, wie bei einem Schrittmotor. Sobald eine genügend hohe Drehzahl erreicht wurde, kann man in den geregelten Betrieb schalten. Am besten schaltet man dazu einfach alle Phasen ab und aktiviert den Komparator. Sobald der erste Interrupt vom Komparator ausgelöst wird, werden die Phasen wieder eingeschaltet.&lt;br /&gt;
&lt;br /&gt;
Der ganze Startvorgang ist aber schon eine Wissenschaft für sich. Es braucht (nach meiner Erfahrung) viel Zeit und Nerven, bis alles richtig funktioniert. Man kann aber am Anfang den Motor auch von Hand anwerfen, das geht viel einfacher als mit einer Zwangskommutierung. Ein Oszilloskop ist eigentlich auch absolut notwendig, um analysieren zu können was der Regler und die BEMF genau macht. &lt;br /&gt;
&lt;br /&gt;
Ganz wichtig aber an dieser Stelle: &#039;&#039;&#039;Wenn der Motor mit einem starren Drehfeld angesteuert wird, sieht die BEMF alles andere als schön aus!&#039;&#039;&#039; Das liegt daran, dass der Motor bei jeder Kommutierung beschleunigt, und danach wieder abgebremst wird, der Motor läuft einfach nicht „rund“. Wenn ihr also irgendwas komisches auf dem Oszilloskop seht, ist das kein Fehler in eurer Schaltung, das ist normal bei Zwangskommutierung!&lt;br /&gt;
&lt;br /&gt;
Wenn Ihr die BEMF auf dem Oszilloskop anschauen wollt, könnt Ihr entweder den Motor einfach von Hand drehen, oder ihr dreht den Motor mit Zwangskommutierung hoch, und schaltet dann alle Phasen ab (nicht auf GND, in der Luft hängend). Direkt nach dem Abschalten der Phasen sollte die BEMF einen relativ schönen Drehstrom zeigen (muss ich selbst noch kontrollieren ob das wirklich der Fall ist :-) )&lt;br /&gt;
&lt;br /&gt;
Bis jetzt habe ich es mit dieser Variante aber noch nicht so richtig geschafft, einen brauchbaren Anlaufvorgang hinzukriegen. Ich glaube auch, dass gekaufte Regler das nicht so machen. Diese scheinen nur einen kräftigen Strom auf eine Phase zu geben, und werten dann die entstandene BEMF aus, aus der dann berechnet werden kann, welche Phase als nächstes bestromt werden muss. So richtig habe ich das aber noch nicht angeschaut, &#039;&#039;&#039;vielleicht weiss hier jemand besser Bescheid und könnte es hier beschreiben?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Schnittstellen ===&lt;br /&gt;
&lt;br /&gt;
Man kann nun den Sollwert der Drehzahl wahlweise über einen PPM-Eingang, über UART, SPI oder I2C vorgeben. Das überlasse ich aber jedem selber, es kommt natürlich darauf an wo der Regler schlussendlich eingesetzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Bildmaterial ==&lt;br /&gt;
=== Oszillogramme ===&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_PWM.png|300px]]&lt;br /&gt;
&lt;br /&gt;
Die drei Phasen während dem geregelten Betrieb, die BEMF ist sehr schön zu erkennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Phasen_Vollgas.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sehen die drei Phasen bei Vollgas aus (100% PWM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_richtig.png|300px]]&lt;br /&gt;
&lt;br /&gt;
* Gelb: Phase A, BEMF sehr schön erkennbar&lt;br /&gt;
* Blau: Mittelpunktspannung&lt;br /&gt;
* Rot: BEMF von Phase A (nach der BEMF-Schaltung!)&lt;br /&gt;
* Grün: Komparator-Interrupts (steigende Flanke) Jeder dritte Interrupt gehört zur Phase A, die anderen Interrupts stammen von den anderen Phasen, die nicht auf dem Bild zu sehen sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_BEMF_falsch.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So kann z.B. die BEMF während der Zwangskommutierung aussehen. Dadurch werden auch zu viele Komparator-Interrupts (Grün, jede Flanke) ausgelöst. Kein schöner Anblick...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Oszillogramm_Anlauf_1.png|300px]]&lt;br /&gt;
&lt;br /&gt;
So sieht der Anlaufvorgang bei einem gekauften Regler aus. eine extrem kurze Geschichte im Vergleich mit meinen paar Umdrehungen mit Zwangskommutierung. Wer kennt das Geheimnis?&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
Als Anregung, wie so ein Regler aussehen könnte (nur 40x26mm klein, inklusive Optokoppler, drei Treibern und drei schönen Stecker!):&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_top_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei: BLDC_Eagle3d_bot_1.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Der HCPL-0600 auf der Unterseite ist übrigens ein Optokoppler um das PPM-Eingangssignal galvanisch zu entkoppeln. Ist nicht zwingend nötig, war aber grad Platz da... :-)&lt;br /&gt;
&lt;br /&gt;
== Siehe Auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248509 Diskussion zum Artikel]&lt;br /&gt;
* [[BLDC Demo Board]]&lt;br /&gt;
* [[Treiber]]&lt;br /&gt;
* [[Mosfet-Übersicht]]&lt;br /&gt;
* [[Leiterbahnbreite]] Unbedingt beachten bei grösseren Strömen!&lt;br /&gt;
* [[Kühlkörper]] Bei sehr hohen Strömen evtl. nötig&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrokopter.de/ucwiki/BrushlessCtrl BrushlessCtrl vom Mikrokopter]&lt;br /&gt;
* [http://svn.mikrokopter.de/listing.php?repname=BL-Ctrl&amp;amp; Software vom Mikrokopter Brushless-Regler]&lt;br /&gt;
* [http://home.versanet.de/~b-konze/ Die Seite von B. Konze, einer der Pioniere in diesem Bereich]&lt;br /&gt;
* [http://www.rcgroups.com/forums/showthread.php?t=1513678 Ein Thema auf rcgroups.com (Englisch) wo einige käuflichen Regler näher angeschaut wurden und eine eigene Firmware angeboten wird]&lt;br /&gt;
* [http://rmmx.gmxhome.de/bldchv/start.html Ein Regler-Projekt für etwas grössere Motoren]&lt;br /&gt;
* [http://www.fc00.de/quadrokopter_6_kw.htm Regler für sehr grosse Motoren]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/01083a.pdf Appnote AN1083 von Microchip, sehr detailliert]&lt;br /&gt;
* [http://www.atmel.com/Images/doc8012.pdf AppNote AVR444 von Atmel]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Motoren]]&lt;/div&gt;</summary>
		<author><name>Kami89</name></author>
	</entry>
</feed>