<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Evolving NG UAVP &#187; Brushless Controller</title>
	<atom:link href="http://uavp.agner.ch/category/ng-uavp-from-scratch/brushless-controller/feed/" rel="self" type="application/rss+xml" />
	<link>http://uavp.agner.ch</link>
	<description>falstaff&#039;s blog about building and developing multicopters</description>
	<lastBuildDate>Wed, 06 Oct 2010 21:49:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Sensor-Board und Flight-Control</title>
		<link>http://uavp.agner.ch/2010/02/sensor-board-und-flight-control/</link>
		<comments>http://uavp.agner.ch/2010/02/sensor-board-und-flight-control/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 22:08:06 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[Antrieb]]></category>
		<category><![CDATA[Brushless Controller]]></category>
		<category><![CDATA[Elektronik]]></category>
		<category><![CDATA[Sensoren]]></category>
		<category><![CDATA[Steuerung]]></category>

		<guid isPermaLink="false">http://uavp.agner.ch/?p=100</guid>
		<description><![CDATA[Letzte Woche habe ich an zwei Abenden die beiden Leiterplatten bestückt. Beim Löten ging alles glatt, ich hätte nicht erwartet das SMD-Löten so einfach ist. Ich habe mich auch etwas informiert wie SMD-Löten am besten gelingt. Insbesondere das PDF &#8220;Der richtige Umgang mit SMD&#8221; und der Artikel &#8220;SMD Löten&#8221; von microcontroller.net haben mir geholfen. Nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Letzte Woche habe ich an zwei Abenden die beiden Leiterplatten bestückt. Beim Löten ging alles glatt, ich hätte nicht erwartet das SMD-Löten so einfach ist. Ich habe mich auch etwas informiert wie SMD-Löten am besten gelingt. Insbesondere das PDF &#8220;<a href="http://www.elv-downloads.de/downloads/journal/SMD-Anleitung.pdf">Der richtige Umgang mit SMD</a>&#8221; und der Artikel &#8220;<a href="http://www.mikrocontroller.net/articles/SMD_L%C3%B6ten">SMD Löten</a>&#8221; von <a href="http://www.microcontroller.net">microcontroller.net</a> haben mir geholfen. Nicht zu vergessen natürlich die Anleitungen für das <a href="http://ng.uavp.ch/moin/Documentation/Construction/Soldering/Sensorboard">Sensor-Board</a>, die <a href="http://ng.uavp.ch/moin/Documentation/Construction/Soldering/FlightControl">Flight-Control</a> und die <a href="http://ng.uavp.ch/moin/Documentation/PartLists/0.22-Mounting">Mounting-Order-List</a>. Während des Lötens ist mir aufgefallen dass ich beim Bestellen die SMD-Duo-Leds vergessen habe. Zudem haben mir noch zwei Teile gefehlt (der <a href="http://www.ti.com/lit/gpn/ads1255">ADS1255</a> und der <a href="http://www.ti.com/lit/gpn/SN74LVC32A">SN74LVC32</a>). Der ADS1255 wird für den Luftdrucksensor verwendet und ist daher relativ wichtig. Der SN74LVC32 wird für den Extension-Bus benötigt, ist also für die Flugfähigkeit nicht wichtig. Den ADS1255 scheint unter allgemeiner Verknappung zu leiden, selbst der Hersteller TI meldet dass sie diesen erst ende Februar liefern können. Ich konnte ihn von einem der Entwickler ausleihen, vielen Dank nochmals.</p>
<table border="0" cellspacing="0">
<tbody>
<tr>
<td align="LEFT">
<div id="attachment_101" class="wp-caption alignnone" style="width: 190px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/fc-front.jpg"><img class="size-medium wp-image-101 " title="Flight-Control vorne" src="http://uavp.agner.ch/wp-content/uploads/2010/02/fc-front-300x300.jpg" alt="Flight-Control vorne" width="180" height="180" /></a><p class="wp-caption-text">Flight-Control vorne</p></div></td>
<td align="LEFT">
<p><div id="attachment_102" class="wp-caption alignnone" style="width: 190px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/fc-back.jpg"><img class="size-medium wp-image-102 " title="Flight-Control hinten" src="http://uavp.agner.ch/wp-content/uploads/2010/02/fc-back-300x300.jpg" alt="Flight-Control hinten" width="180" height="180" /></a><p class="wp-caption-text">Flight-Control hinten</p></div></td>
</tr>
<tr>
<td align="LEFT">
<p><div id="attachment_103" class="wp-caption alignnone" style="width: 190px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/sb-front.jpg"><img class="size-medium wp-image-103 " title="Sensor-Board vorne" src="http://uavp.agner.ch/wp-content/uploads/2010/02/sb-front-300x300.jpg" alt="Sensor-Board vorne" width="180" height="180" /></a><p class="wp-caption-text">Sensor-Board vorne</p></div></td>
<td align="LEFT">
<p><div id="attachment_104" class="wp-caption alignnone" style="width: 190px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/sb-back.jpg"><img class="size-medium wp-image-104 " title="Sensor-Board hinten" src="http://uavp.agner.ch/wp-content/uploads/2010/02/sb-back-300x300.jpg" alt="Sensor-Board hinten" width="180" height="180" /></a><p class="wp-caption-text">Sensor-Board hinten</p></div></td>
</tr>
</tbody>
</table>
<p><span style="color: #800000;"><strong>Achtung: Beide Boards sind nicht vollständig und haben Fehler (siehe Text)</strong></span></p>
<p><span id="more-100"></span></p>
<p><div id="attachment_105" class="wp-caption alignright" style="width: 250px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/bat-plug.jpg"><img class="size-medium wp-image-105 " title="Batteriestecker" src="http://uavp.agner.ch/wp-content/uploads/2010/02/bat-plug-300x221.jpg" alt="Batteriestecker" width="240" height="177" /></a><p class="wp-caption-text">Batteriestecker</p></div>
<p>Die Sensoren wollte ich nicht fest ein löten sondern Steckbar machen wie es einige der Entwickler auch haben. Leider hatte ich zu wenig Stiftleisten, und vor allem keine abgewinkelten Stiftleisten zur Hand, weshalb ich diese, bis auf den LIS3L, noch nicht anlötete. Der erste Start konnte ich nicht wie in der Anleitung mit begrenztem Strom durchführen, da ich kein Labornetzteil habe. Ich habe als Work-Around mein Multimeter dazwischengehängt. Dies hat bei der Strommessung beim kleinen Anschluss (für Mikro/Milliampere) eine 400mA Sicherung.Vorsicht: Beim vor konfektionierten Stromkabel entspricht die Farbe der Drähte nicht der Polung am Stecker. Die einzelnen Drähte können aber vom Stecker entfernt werden und in der korrekten Anordnung wieder eingesteckt werden. Nachdem ich Spannung angelegt habe und den On-Button gedrückt habe leuchteten die LEDs, alles schien in Ordnung zu sein. Die unter <a href="http://ng.uavp.ch/moin/Documentation/Initialization">Initialization</a> genannten Testpunkte hatten die richtige Spannung.</p>
<p>Um den LPC-2148 flashen habe ich den Stecker tty0 mit dem erstellten Kabel am SerCon SIO eingesteckt. Das zum Download angebotene Tool <em>lpc21isp</em> kann aus der Linux-Konsole gestartet werden.</p>
<pre>$ lpc21isp -verify -wipe wolferl-ng.hex /dev/ttyUSB0 38400 12000
Verify after copy RAM to Flash.
lpc21isp version 1.48
File wolferl-ng.hex:
 loaded...
 converted to binary format...
 image size : 288296
Synchronizing (ESC to abort). OK
Read bootcode version: 12
2
Read part ID: LPC2148, 512 kiB ROM / 40 kiB SRAM (67305253)
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
Wiping Device. OK
Sector 1: ...........................................................................................
...
Download Finished and Verified correct... taking 161 seconds
Now launching the brand new code
</pre>
<p>Die erste Ausgabe war aber wirklich ernüchternd</p>
<pre>Wolferl-NG, Version 0.54, Revision r4022

Type 'show license' for software license
Type 'help' for a list of commands

# show devices

Detected devices: 

 No devices detected!
</pre>
<div id="attachment_106" class="wp-caption alignright" style="width: 310px"><a href="http://uavp.agner.ch/wp-content/uploads/2010/02/sercon-ng.png"><img class="size-medium wp-image-106" title="SerCon zu NG UAVP" src="http://uavp.agner.ch/wp-content/uploads/2010/02/sercon-ng-300x142.png" alt="SerCon zu NG UAVP" width="300" height="142" /></a><p class="wp-caption-text">SerCon zu NG UAVP</p></div>
<p>Mit einem Flachbandkabel, einem 6-Pin Stecker und einem 10-Pin Stecker habe ich ein Atmel-ISP-Programmierkabel für die SerCon erstellt. Dabei ist mir aufgefallen dass ich den Wannenstecker auf dem Flight-Control-Board verkehrt aufgelötet habe (Kerbe müsste nach unten sein). Zudem ist die Pinfolge auf dem SerCon nicht dem Standard entsprechend, weshalb ich den Adapter wie folgt verbunden habe:</p>
<pre>NG UAVP        SerCon ISP1
1        =&gt;    9
2        =&gt;    2
3        =&gt;    7
4        =&gt;    1
5        =&gt;    5
6        =&gt;    10
</pre>
<p>Damit konnte ich den Atmel auf dem Flight-Control PCB flashen, was jedoch etwas lange ging (ca. 1h mit verify)</p>
<pre>$ avrdude -p m644p -c ponyser -P /dev/ttyUSB0 -V -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfc:m
...
$ avrdude -p m644p -c ponyser -P /dev/ttyUSB0 -U flash:w:rc-ctrl.hex
...
</pre>
<p>Der Atmel auf dem Sensor-Board benötigt jedoch nur 3.3V, weshalb ich die Zehner-Dioden auf dem SerCon mit 3.3Volt Zehner-Dioden ersetzt habe. Leider funktionierte das Flashen immernoch nicht. Ich konnte ein Atmel STK500 Programmierer organisieren, mit welchem das Programmieren ganz schnell funktionierte. Zuerst musste ich aber auch da die Spannung senken:</p>
<pre>$ avrdude -p m328p -c stk500 -P /dev/ttyUSB0 -t -F

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_recv(): checksum error
avrdude: stk500v2_program_enable(): bad STK600 connection status: Unknown (0x64)
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATMEGA328P is 1E 95 0F
avrdude&gt; vtarg 3.3
&gt;&gt;&gt; vtarg 3.3
avrdude: stk500v2_set_vtarget(): reducing V[aref] from 5.0 to 3.3
avrdude&gt; quit
&gt;&gt;&gt; quit
</pre>
<p>Die Fehlermeldungen können ignoriert werden&#8230; Nun sollte zwischen Pin 2 und 6 am Stecker ISP6PIN 3.3Volt gemessen werden. mit dem beigelegten Kabel kann nun das Sensorboard angeschlossen und geflasht werden:</p>
<pre>$ avrdude -p m328p -c stk500 -P /dev/ttyUSB0 -V -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x00:m
...
$ avrdude -p m328p -c stk500 -P /dev/ttyUSB0 -U flash:w:sb-ctrl.hex
...
</pre>
<p>Die Aktoren antworteten nicht auf anhieb (&#8220;show devices&#8221; listete nicht alle Aktoren auf, auch &#8220;scan actors&#8221; fand keine Aktoren). Der Fehler lag bei einem nicht richtig angelöteten Pin beim IC4. Danach wurden alle Brushless-Controller erkannt. Diese habe ich dann später auch mit einigen Befehlen in der NG UAVP Konsole getestet:</p>
<pre>set defaults mlx10"
...
set controller rc-test
...
set HW.HAL quadcopter
...
set RC.dev.primary dsl0
...
# show actors

Detected actors in current se
Needed actors in current HAL:

Actor addresses used:        

Actor Activation Status:

 Actor 1: enabled (front)
 Actor 2: enabled (back)
 Actor 3: enabled (right)
 Actor 4: enabled (left)
</pre>
<p>Nun kann mit den Befehlen &#8220;disable actor&#8221; und &#8220;enable motors&#8221; getestet werden. Vorsicht: Die Motoren drehen damit!</p>
<pre>disable actor 2
disable actor 3
disable actor 4

enable motors
</pre>
<p>Momentan sind einge Baustellen offen bei mir: Zum einen Antwortet der LIS3L nicht. Ich nehme an dass dieser den Lötvorgang nicht überstanden hat. Strom ist auf dem Breakout-Board vorhanden. Die Gyrometer habe ich inzwischen mit Stiftleisten montiert. Um den OPA4350 sind viele Kondensatoren und Widerstände nahe beieinander. Ich habe insgesamt vier Bauteilen verdreht aufgelötet.  Es empfiehlt sich in diesem Bereich die Fotos auf dem Wiki zu beachten (welches auch Fehler beinhalteten, inzwischen jedoch korrigiert sind). Daraufhin antworteten die Gyros, ich hatte jedoch leider  beim Befehl &#8220;loop adc12&#8243; Unregelmässigkeiten beim Yaw-Gyro. Auch ein tauschen der Gyros hat nichts gebracht, es deutet momentan alles daraufhin das der 12-Bit-AD-Wandler ein Problem hat. Auch der ADS1255 sollte unter &#8220;show devices&#8221; sichtbar sein, was er aber nicht ist. Noch weiss ich nicht weshalb er dies nicht macht.</p>
]]></content:encoded>
			<wfw:commentRss>http://uavp.agner.ch/2010/02/sensor-board-und-flight-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brushless Controller: TowerPro w25A</title>
		<link>http://uavp.agner.ch/2009/12/brushless-controller-towerpro-w25a/</link>
		<comments>http://uavp.agner.ch/2009/12/brushless-controller-towerpro-w25a/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 22:35:49 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[Brushless Controller]]></category>
		<category><![CDATA[Steuerung]]></category>

		<guid isPermaLink="false">http://uavp.agner.ch/?p=30</guid>
		<description><![CDATA[Viele Neuigkeiten um Weihnachten: Bei mir sind inzwischen alle Voraussetzungen eingetroffen. Zudem habe ich gehört, dass die Boards am 26C3-Kongress verfügbar sein werden . Nur leider kann ich da nicht Teilnehmen. Aber direkt nach dem Kongress soll der Shop eröffnet werden, so dass ich schon bald mein Exemplar des 0.22 Boards in den Händen halten [...]]]></description>
			<content:encoded><![CDATA[<p>Viele Neuigkeiten um Weihnachten: Bei mir sind inzwischen alle <a href="http://ng.uavp.ch/moin/Documentation/Requirements">Voraussetzungen</a> eingetroffen. Zudem habe ich gehört, dass die Boards am <a href="http://events.ccc.de/congress/2009/wiki/UAVP-NG">26C3-Kongress</a> verfügbar sein werden <img src='http://uavp.agner.ch/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . Nur leider kann ich da nicht Teilnehmen. Aber direkt nach dem Kongress soll der Shop eröffnet werden, so dass ich schon bald mein Exemplar des <a href="http://amir.ch/weblog/2009/11/uavp-ng-hardware-0-22-has-arrived.html">0.22 Boards</a> in den Händen halten werden! Zudem wurde die <a href="http://ng.uavp.ch/moin/Documentation/PartLists/0.22">Bauteilliste</a> freigegeben (jedenfalls inoffiziell), so dass der Bestellung derer nichts mehr im Wege steht!</p>
<p>In der Zwischenzeit habe ich meine Brushless Controller etwas unter die Lupe genommen. Bei der Bestellung habe ich mich für günstige &#8220;China-Controller&#8221; gegenüber den teureren BC&#8217;s von <a href="http://mikrokopter.de/ucwiki/BrushlessCtrl">Mikrokopter.de</a> entschieden. Die <a href="http://www.towerpro.com.tw/viewitem1.asp?sn=590&amp;area=51&amp;cat=175">TowerPro w25A</a> ESC (Electric Speed Controll) habe ich bei <a href="http://www.hobbycity.com/hobbycity/store/uh_viewItem.asp?idProduct=4860&amp;Product_Name=TowerPro_w25A_Brushless_Speed_Controller">HobbyKing</a> gekauft, und sollten mit ein paar <a href="http://ng.uavp.ch/forum/viewtopic.php?f=22&amp;t=155">Modifikationen</a> ohne weiteres zur Zusammenarbeit mit dem NG UAVP bewegt werden. Zudem sollen sie Leistungsfähiger sein als die BC&#8217;s von Mikrokopter.de. <span id="more-30"></span></p>
<p>Nun, warum sind die Modifikationen notwendig? Normalerweise werden die Brushless Controller mit einem PWM-Signal angesteuert. Bei einem PWM-Signal (Pulsweitenmodulation) wird mit der Länge der Einschaltdauer des Stroms der &#8220;Wert&#8221; bestimmt (mehr dazu hat die <a href="http://de.wikipedia.org/wiki/Pulsweitenmodulation">Wikipedia</a>). Bei einem Brushless Controller heisst dies, je länger der Strom eingeschaltet ist, desto schneller soll sich der Motor drehen. PWM ist im RC-Modellbau sehr gebräuchlich: Normalerweise werden damit Servo-Motoren angesteuert. Die Lage des Servos wird dabei durch die Einschaltdauer bestimmt. Dies wurde nun auch bei den BC&#8217;s so angewendet, weshalb auch die TowerPro w25A direkt an einem RC-Empfänger angeschlossen werden können um so den Motor zu steuern.</p>
<p>Da die Motoren bei einem Mikrokopter vom Mikrokontroller gesteuert werden, ist ein PWM Signal eher ungünstig. Zudem können die meisten BC&#8217;s mit einem PWM-Signal nur 150 mal pro Sekunde geregelt werden. Für einen stabilen Flug eines Mikrokopters haben sich jedoch raten von ca. 300 Regelungen pro Sekunde <a href="http://www.rcgroups.com/forums/showthread.php?t=766589">bewährt</a> (der NG UAVP regelt übrigens mit 1000Hz). Deshalb ist ein Umstieg auf eine andere Kommunikation mit den BC&#8217;s notwendig. Dafür hat das Mirkokopter.de Projekt bereits den Weg angebahnt, und ihren BC mit I2C ausgestattet. I2C ist ein serieller Datenbus (siehe <a href="http://de.wikipedia.org/wiki/I%C2%B2C">Wikipedia</a>). Dabei hat jedes Gerät am Bus eine eigene Adresse. Alle BC&#8217;s müssen deshalb nebst dem Umbau mit einer eigenen, neuen Firmware versehen werden, welche I2C spricht und die Motoren-ID kodiert hat.</p>
<p>Im <a href="http://www.rcgroups.com/forums/showthread.php?t=766589">RCGroups-Forum</a> wurde dieser Umbau publiziert und dokumentiert. Zuerst wurde der TowerPro w25A Type 2 konvertiert. Der User Quax hat dazu die Software modifiziert. Später gab es jedoch eine neue Version, den TowerPro w25A Type 3 (mit dem H Kleber auf der Rückseite). Die Konvertierung dieses Typs ist ab <a href="http://www.rcgroups.com/forums/showthread.php?t=766589&amp;page=21">Seite 21</a> im selben Forum dokumentiert. Als ich nun mein TowerPro w25H aufschlitzte kam jedoch eine neue Revision zum Vorschein: Type 3/H Revision 1.1.</p>
<p><a href="http://uavp.agner.ch/wp-content/uploads/2009/12/TowerPro_w25A_H_Rev1.1.jpg"><img class="alignnone size-medium wp-image-31" title="TowerPro_w25A_H_Rev1.1" src="http://uavp.agner.ch/wp-content/uploads/2009/12/TowerPro_w25A_H_Rev1.1-300x142.jpg" alt="" width="300" height="142" /></a></p>
<p>Ab <a href="http://www.rcgroups.com/forums/showthread.php?t=766589&amp;page=43">Seite 43</a> im Forum fand ich jedoch Entwarnung, auch diese Revision sollte sich ohne weiteres modifizieren lassen&#8230;</p>
<p>Trotzdem hab ich mich noch nicht ans Konvertieren gewagt. Ich möchte zuerst einen konvertieren und testen, habe jedoch gerade nichts zur Hand, was I2C spricht.  Das I2C-Protokoll für die BC&#8217;s ist übrigens sehr einfach: Als Adresse wird 0&#215;50 + 2 * Motoren-ID (z.B. 0&#215;52 für den 1. Motor) und dann die Kraft zwischen 0 und 250.</p>
]]></content:encoded>
			<wfw:commentRss>http://uavp.agner.ch/2009/12/brushless-controller-towerpro-w25a/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

