Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Willas Shrediquette Tricopter / Quadrocopter / Hexacopter



Seiten : 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15

bendh
26.02.2012, 21:24
nur mal so zum überlegen.
wenn doch jetzt am Code gearbeitet wird, wäre es nicht sinnvoll auf einen Prozessor zu wechseln mit 3,3V Versorgung, dann wäre auch eine Zelle ausreichend und die ganze Levelshifter Geschichte fällt weg.

deHarry
26.02.2012, 22:05
Gute Idee. Welcher Prozessor käme denn in Frage?
Natürlich ein Atmel, das Rad soll ja nicht komplett neu erfunden werden.
Ein Mega kommt bei 3,3 V nicht sicher über 8 MHz raus (bitte nicht wieder die Diskussion anfangen, dass schon vereinzelt Atmels gesehen wurden, die bei 3,3 V mit 16 MHz liefen... den Gegenbeweis habe ich mit meinem Shorty angetreten. Er lief, bis irgendwas Unvorhergesehenes passierte, dann hat er sich aufgehängt. Nach Umbau auf 5 V keine derartigen Probleme mehr).
Also ein XMega?
Die kommen mit minimal 44 Hufen daher, wenn ich nicht irre, sind damit dann im TQFP Gehäuse 10x10 mm groß (gegenüber unserem jetzigen 328p, der mit 32 Pins 7x7 mm groß ist).
Es gibt einen XMega mit 44 Hufen im QFN Gehäuse (das ist das Gleiche wie beim MPU-60x0), das ist dann wieder nur 7x7 mm groß und die Beinchen außenrum fallen weg -> Platzgewinn. Das wäre der ATxmega32A4U (http://www.atmel.com/devices/ATXMEGA32A4U.aspx), 32k Flash, 4k RAM, also das Pendant zum 328p. Willas Code läuft darin sicher, viel Platz für Erweiterungen ist allerdings nicht.
Die nächste Stufe bei den XMegas ist dann schon ein 64pinner, der im QFN Gehäuse 9x9 mm groß ist.

Allen gemeinsam ist der MAximale Takt von 32 MHz bei 1,8 .. 3,6 V Betriebsspannung.
Apropos 32 MHz Clock... der wird intern erzeugt. Extern kann maximal ein 16 MHz Quarz angeflanscht werden.

Mhmm, das klingt ja alles viel zu gut um wahr zu sein...

Hi William, was meinst du? Lust auf Experimente? :-)

Che Guevara
27.02.2012, 12:42
Hallo,

zunächst einmal muss ich sagen, dass ich die Idee mit dem MPU 6050 auf dem Bolt sehr gut finde. :D Ich selbst hatte schonmal überlegt, aber es dann doch beiseite gelegt, weils ja so auch funktioniert. Nur wegen 2Fets und 4 Widerständen den µC tauschen halte ich für eine etwas oversizede Aktion. Ich glaube, der Mehraufwand, Willas Programm von einem ATmega auf einen ATxmega zu portieren, lohnt nicht. Ich habe zwar noch nie mit einem xmega gearbeitet, aber es gibt sicherlich ein paar Hürden... Grundsätzlich wäre ich bereit, sofern erwünscht, einen Beitrag zu diesem Projekt beizutragen. Bspw. könnte ich die ersten Platinen ätzen, um nicht Gefahr zu laufen, eine fehlerbehaftete Platine professionell fertigen zu lassen.

Gruß
Chris

deHarry
27.02.2012, 20:12
Hi Chris,

ich habe inzwischen einige Erfahrung im Design von MPU-60x0-behafteten Platinen, weswegen ich mir ein Urteil über die zweckmäßigkeit solch einer Änderung zutraue ;-)

Wenn du dir mal die Platinen der sNQs daraufhin anschaust, wirst du sehen, dass "nur diese 4 Rs und 2 FETs" einen ziemlichen Platz verbrauchen, zumindest, wenn man einseitig entflechtet.
Nimmt man dann noch die Einsparung des StepUp-Reglers dazu (mit dem XMega wird nur noch der 3,3 V Regler benötigt) und den entfallenden Quarz mit seinen beiden Kondensatoren, dann kommt einiges an Platzersparnis zustande.

Ob große Änderungen am Programm notwendig sind, kann ich jetzt noch nicht abschätzen, aber die Hardware wird dann SEHR übersichtlich.
Nur noch die CPU und der MPU, der 3,3 V Regeler, ein paar Kondensatoren und Widerstände... :) und Stecker, Stecker, Stecker.

Ich kann mir vorstellen (ohne es jetzt schon belegen zu können), dass der XMega genügend Power hat, um störungsfrei im Chip die PPM-Impulse für alle Motoren zu erzeugen. Ausreichend PWM-Ausgänge mit einstellbarer Totzeit hat er jedenfalls. Damit entfallen am Bolt sechs Konverter - vielleicht auch ein Argument.

Also ich würde einen Versuch in dieser Richtung starten, wenn Willa mitmacht. Nochmal in Vorlage treten und ein Design aus dem Hut zaubern, das keiner haben will, reizt mich nicht so arg ;-)

Für den nächsten sNQ kann ich mir das übrigens ebenfalls gut vorstellen :)

Und dein Angebot der Prototypenfertigung würde ich natürlich mit Handkuss annehmen, wenn es um die rechteckige Version für den Bolt (oder jeden anderen Copter) geht. Nicht so sehr wegen "fehlerbehaftet", da habe ich eigentlich keine Ängste und der bisherige Erfolg gibt mir Recht ;-) aber ich denke, das geht zumindest preiswerter und ggf. sogar schneller als über MME.

Die nächste Generation sNQ wird aber wohl besser wieder professionell gefertigt werden, oder trete ich dir da zu nahe?
Wenn du eine CNC-Fräse dein Eigen nennst, könnte auch das klappen...

Che Guevara
27.02.2012, 20:44
Hallo,

ich wollte dich damit auch nicht in irgendeiner Form kritisieren o.ä. Ich wollte lediglich ausdrücken, dass man den Software-Aufwand, den diese Änderung mitsich bringen würde, nicht unterschätzen sollte (aber vielleicht überschätze ich ihn auch nur...). Soweit ich das bis jetzt in diversen Diskussionen mitbekommen habe, sollen doch einige Unterschiede zwischen den Mega und den XMega Chips vorhanden sein. Konkret belegen kann ich das aber nicht, dafür fehlt mir auch die praktische Erfahrung mit den XMegas.
Sieh bitte meine Antwort nicht als Kritik, sondern nur als Hinweis, damit nichts übersehen wird.
Dass der XMega die PWM selbst erzeugen kann, daran zweifle ich kein bisschen! Als ich meinen ersten Quadrocopter gebaut habe, erzeugte der darauf befindliche Mega328P (@16MHz) die PWM auch selbst. Alle 4 Kanäle wurden von 2 Hardware PWM Kanälen erzeugt und er flog (für meine damaligen Flug & Programmierkünste) erstaunlich gut.

Gruß
Chris

deHarry
27.02.2012, 21:17
Hallo Chris,

nö, keine Bange, das habe ich nicht als Kritik aufgefasst. Bisher habe ich erst ein einziges Mal hier im Forum geglaubt, mich "wehren" zu müssen, und da habe ich dann alle Smileys weg gelassen :-).
Wenn ich also ein Posting von mir gebe, in dem keine Smileys zu sehen sind, dann müsst ihr euch ducken, vorher nicht.

Und was den Code bzw. seine Änderung angeht, bin ich sehr zuversichtlich. Die Mathe zur Regelung wird sich nicht unterscheiden, und die möglicherweise unterschiedliche Ansteuerung von Ports oder der Timer haben wir für den sNQ auch schon mal hinter uns gebracht.
Die Software von Willa ist in dieser Hinsicht (äußere Beschaltung des Chip) sehr übersichtlich und änderungsfreundlich, der Rest ist modular aufgebaut. Also ich denke, das ist machbar.

Bascom unterstützt doch die XMegas ... ja, macht er :-)

Che Guevara
27.02.2012, 22:54
Ok, das klingt gut :D
Wenn du so zuversichtlich bist, dann kann ja dem Ganzen nichts mehr im Wege stehen. Ich hoffe, du / ihr kommt schnell zu einem brauchbaren Ergebnis. Dann aber bitte mit Feedback ;)
Mit welchem Programmer werden den die XMegas vorwiegend programmiert? Mit dem mkII?

Gruß
Chris

Che Guevara
28.02.2012, 12:09
Hi,

zunächst einmal wollte ich dich fragen, ob du noch einen MPU über hast? Wenn ja, hätte ich Interesse. :)
Meine Platinen werden geätzt, min. Breite der Bahnen ist 0.05mm (lieber wäre mir aber > 0.1mm). Doppelseitig kann ich leider nicht bieten, und eine CNC habe ich auch nicht, dafür hat bei mir bis jetzt noch jede Platine funktioniert.
Stopplack habe ich auch nicht, aber ich entferne nach dem Ätzen nur an den Stellen den UV-positiv Lack, an denen später gelötet werden soll. Somit wird ein passivieren der Platine verhindert ;)
Als Professionell würde ich das auch nicht bezeichnen, aber auf jeden Fall schnell, günstig und funktionell ;)
Wenn du mein Angebot annimmst, könnte ich dir die Platine innerhalb 1-2 Werktagen fertigstellen und versenden.

Gruß
Chris

deHarry
28.02.2012, 17:36
Hi Chris,

ich habe zum Progammieren bisher einen mySmartUSB light verwendet. Ich hoffe, der spricht auch über den ISP-Port mit dem XMega... Pufff!! Zerplatzt :( ... der XMega wird lt. technischer Unterlagen auf der Hersteller HP leider nicht unterstützt...

Mhmm... und die mitgelieferte Software? Was kann die? AHAA! Zumindest das ProgTool, das beim meinem "light" dabei ist, bietet den XMega64 als Hardwareauswahl an. Denken wir also mal penetrant positiv und nehmen an, dass das doch geht.

So, jetzt dein Ätzangebot...
WOW! MME bietet "gerade mal" 0,2 mm als Abstand und Leiterbreite an und dünner gehe ich traditionell auch nicht.
Ist der Lack nach dem Ätzen auch hitzeresistent und stößt Lötzinn ab?
Das ist meiner Meinung nach für das Handlöten von QFN-Gehäusen mit 0,5 mm Pitch unabdingbar.

Für einen sNQ würde ich, wie gesagt, dann wohl doch lieber wieder zu MME gehen, aber die rechteckigen Platinen für Bolt und Co... gerne :)

Was den MPU angeht würde ich dich bitten mir mal eine PM (Adr. siehe meine HP) zu schicken, ich möchte das Thema hier nicht breit treten. Nur soviel: Der Preis wird sehr fair sein.

Und dann sollte sich Willa mal äußern. Den hätte ich gerne im Boot, wenn ich das mal so sagen darf :-)

Che Guevara
28.02.2012, 17:55
Hallo,

ja, das ist leider ein sehr großer Nachteil der XMega, dass diese nicht mit jedem Programmer beschreibbar sind... Da ich selbst auch nur einen USB-ISP Bascom Programmer besitze, werde ich mir jetzt einen neuen kaufen. Ich pendele mich zwischen zwei verschiedenen ein:
Diamex All-AVR (27€) oder AVRISP mk2 (39€)
Mal sehen, welchen ich nehme. Mit deinem Post hast du mich dazu inspiriert, einmal etwas mit einem XMega zu machen. Die Daten sprechen einfach für sie ;)
Zum Lack:
Also solange man nicht ewig darauf herumbrutzelt, bleibt er auch einigermaßen auf der Platine. Ab und zu passiert es mir, dass ein kleiner Tropfen Lötzinn auf die Platine fällt. Das ist, wie wenn Lötzinn auf meinen Basteltisch kommt -- einmal kurz seitlich drangestoßen und es fliegt weg -- ergo: eine gewisse "Lötzinnabstoßung" ist vorhanden, allerdings nicht vergleichbar mit einem richtigen Lötstopplack.
Zum Löten:
Da ich noch nie QFN gelötet habe, ist das hier nur eine waghalsige Vermutung, aber: Beim TQFP Löten bringe ich auf alle Beinchen viel Lötzinn auf, anschließend entferne ich es wieder mit Entlötlitze. Ergebnis: PERFEKTE Kontakte!
Ich könnte mir vorstellen, dass das beim QFN Löten nicht sehr viel anders ist.
Solltest du Interesse haben, ich würde dir die Platine(n) gegen den reinen Materialwert schicken. Da ich dir eine PN sende bzgl. dem MPU könnten wir das dann ja dort klären?!

Gruß
Chris

deHarry
28.02.2012, 18:20
Ich denke wir kommen ins "Geschäft" :-)

Wie ein QFN-Gehäuse aussieht weißt du?
Da gibt es keine Beinchen, die man mit Entlötlitze wieder von überflüssigem Lot befreien könnte. Der eigentliche Pin sitzt unterhalb des Gehäuses und schaut zum Glück noch einen halben Millimeter um die Ecke.. Unterseite und Seite sind eben, d.H. der Pin steht nicht über. Man kann dann von der Seite den Pin mit Lot benetzen und hoffen, dass das Lot per Kapillareffekt unter das Gehäuse gezogen wird und gut kontaktiert.
Soweit die Lötkolben-Methode, die ich beim MPU-60x0 jetzt dreimal mit positivem Ergebnis angewandt habe.

Ich denke, ohne eine vorherige gute Verzinnung der Leiterbahnen ist dieses Unterfangen aussichtslos...

Che Guevara
28.02.2012, 19:08
Gut, ich habe dir soeben eine Mail geschrieben ;)
Ja, weiß ich. Ich dachte, da die Pins ja an der Seite des Gehäuses sichtbar sind, sollte man hier auch ansetzen können und somit zwar nicht direkt unter, aber "neben" dem Chip löten können. Dadurch wird sicherlich auch etwas Lötzinn unter das Gehäuse fließen. Notfalls könnte man ja einfach auch alle Pins verzinnen und anschließend den MPU mithilfe des Heißluftföns "einlöten". Ich habe schon sehr oft versch. Megas im TQFP Gehäuse mithilfe des Heißluftföns ent- und verlötet... Auch den gleichen Chip teilweise mehrmals, ohne Probleme.

Gruß
Chris

Bammel
28.02.2012, 19:50
meine methode um den MPU zu verlöten sieht wie folgt aus...

ich geben aber die einzelnen lötstellen auf der platine lötzin auf. legen dann den MPU auf seine position und richte diesen aus. die platine habe ich vorher auf eine ca 1,5mm dicken metalplatte gelegt die ich nun von unten mit einem heißluftfön erhitze. nach einer zeit sieht man wie das lötzin flüssig wird und sich mit dem MPU verbindet. als indukator für genug hitze kann man auch an einem nebenstehenden freien lötpad noch ein bisl lötzin aufgeben.

wenn das gemacht wurde heißluftfön aus und abkühlen lassen. noch auf kurzschlüsse prüfen und fertig ists. so kann man den MPU auch schön wieder entlöten.

Scotch
01.03.2012, 14:33
Moin,
evtl. ist dies für den einen oder anderen auch interessant.

Das neue FreeIMU Board 4.0 ist fertig und hat die folgenden Sensoren verbaut.


MPU6050 accelerometer andgyroscope,
the HMC5883L magnetometer
and the MS5611 high resolution barometer

Weitere Infos hier.
http://www.varesano.net/projects/hardware/FreeIMU#v0.4

Soll ab 2.März in den folgenden Shops zu bekommen sein.
Jussi's ViaCopter: http://viacopter.eu/
Stefano's SDModel: http://www.sdmodel.it/
Paul's Flyduino: http://flyduino.net/

Gruß Ingo

Che Guevara
05.03.2012, 22:11
Hallo,

@Bammel,
darf ich fragen, welches Material du für die Metallplatte verwendest? Würde Aluminium funktionieren? Warum machst du das? Ich vermute, damit die Platine nicht schwarz wird und stinkt!? (Ist mir heute passiert)...
Wie warm wird dein Heißluftfön? Meiner geht bis 560, aber das wird zuviel sein!?
Mein MPU ist heute außerdem "davongeflogen", konnte es wohl nicht mehr erwarten xD
Ich denke, ich werde deine Methode die Tage mal mit einer alten Herdplatte probieren... Dann bleibt er wenigstens an Ort und Stelle :D Sollte ich dann auch eine Metallplatte dazwischen legen?

Gruß
Chris

Scotch
05.03.2012, 22:34
Ich habe mal etwas von der Methode mit der Bratpfanne bzw Topf gehört.
Dort wurde feiner Sand gefüllt und die Platine dann Darauf gelegt.
Das soll für eine gleichmäßige Temperaturverteilung sorgen.
Gruß Ingo
PS hab den Link gefunden...
http://www.heise.de/hardware-hacks/artikel/SMD-Loeten-in-der-Pizzapfanne-1276166.html

deHarry
05.03.2012, 22:37
Hi Chris,

ich löte den MPU mit einer feinen SMD-Lötspitze mit dem Lötkolben an.
Erst einen Pin anheften, dann den diagonal gegenüber.
Anschließend die Pins und die Pads mit (mäßig) SMD-Lötzinn einsudeln, das fließt dann schön zwischen die Pins und Pads, der Lötstopplack verhindert Lötbrücken zwischen den Pins/Pads.
"Einsudeln" heißt, mit der Lötspitze am IC entlang in der Kante zwischen IC und Platine hin- und herfahren und die gerade bediente Seite gleichmäßig erhitzen.
Das hat bis jetzt dreimal (an 3 MPUs ;-)) prima funktioniert.

Die heißes-Blech-Methode empfielt sich in meinen Augen eher um den MPU wieder auszubauen...

Der Herdplattentrick wird auch immer wieder gerne genommen. Ich denke, wenn die Platine flach auf der Herdplatte aufliegt, brauchst du kein Blech mehr dazwischen. Das diente bei Sven nur dazu, die heiße Luft nicht direkt an die Platine kommen zu lassen und die Hitze gleichmäßig zu verteilen (was wichtig ist, wie du ja schon selbst gerochen hast :cool:). Kommt dann auch langsamer und lässt sich eventuell besser dosieren.
Habe ich aber noch nicht selbst ausprobiert.

Che Guevara
07.03.2012, 18:52
Hallo,

leider musste ich heute feststellen, keiner meiner beiden MPUs funktioniert... Habe alles laut DB aufgebaut, lediglich der C an Pin 20 ist bei mir 10n (50V). Harald, wäre es möglich, dass du mir den Source-Code für I2C schickst? Möchte ihn mir nur ansehen, um alle Fehler ausschließen zu können.
Den CS Pin soll man im I2C Modus ja auf 3V3 legen, oder?
Ist die Adresse &B11101000 oder &B01101000 ?

Vielen Dank & Gruß
Chris

EDIT:
Hab gerade das hier gefunden: http://www.instructables.com/id/Picopter/
Sieht ähnlich wie der SnQ aus :D

deHarry
07.03.2012, 20:15
leider musste ich heute feststellen, keiner meiner beiden MPUs funktioniert... Habe alles laut DB aufgebaut, lediglich der C an Pin 20 ist bei mir 10n (50V). Harald, wäre es möglich, dass du mir den Source-Code für I2C schickst? Möchte ihn mir nur ansehen, um alle Fehler ausschließen zu können.
Den CS Pin soll man im I2C Modus ja auf 3V3 legen, oder?
Hi Chris!

Kein Panik, die Chips sind nicht das Problem. Schauen wir mal...

Jetzt forderst du mich aber... CS-Pin? ;)
Ah, du hast ja den MPU-6000, d.h. mein Schaltbild sagt Pin 8 = Vlogic, das ist beim 6000er der CS.
Ja, der muss auf 3V3, damit I²C eingeschaltet ist.

Der zu große Kondensator an Pin 20 ist ok, das läuft so auf meinem Stretcho ohne Probleme.


Ist die Adresse &B11101000 oder &B01101000 ?
Und schon wieder eine Herausforderung... wenn ich deine Binärwürste richtig interpretiere, dann fragst du mich, ob die Adresse 0xE8 oder 0x68 sein muss... In meinem Schaltbild steht 0x59, weil die Basisadresse des MPU die 0x58 ist und der AD0-Pin ebenfalls auf 3V3 liegt.
... was natürlich leider vollkommener Käse ist, denn die Basisadresse des Chips ist 0x68 und das AD0-Bit macht daraus 0x69.
Im Code ist es richtig, denn den hat Sven geschrieben... Danke Sven! :)

Und jetzt musst du auf die Basisadresse nach I²C-Norm noch das Unterste Bit draufrechnen, mit dem zwischen Lesen und Schreiben unterschieden wird.

[edit]
Vielleicht kurz "draufrechnen" erklären:
Die Bits der 0x69 als 7 Bit-Zahl hinschreiben, dann eine Stelle nach links schieben und das R/W-Bit auf die dadurch frei gewordene Stelle als neues LSB (niederwertigstes Bit) einfügen. Das Ergebnis wird dann neu als jetzt 8stelliger Bin-Wert interpretiert.

Konkret musst du also im Code

Const Mpuaddr = &HD3 ' Device adr. = 69H (as 7bit adr), Read adr = D3 (LSB = 1)
Const Mpuaddw = &HD2 ' Device adr. = 69H (as 7bit adr), write adr = D2 (LSB = 0)
diese beiden Adressen verwenden.

Richtig schön ausführlich ist das in meinem Auswuchtprogramm gezeigt, das du hier runterladen kannst:
http://www.harald-sattler.de/html/shrediquette_nq_v2_bl.htm
Dort ziemlich weit unten... eigentlich ganz unten.


EDIT:
Hab gerade das hier gefunden: http://www.instructables.com/id/Picopter/
Sieht ähnlich wie der SnQ aus :D
Tjaaa, den Picopter kenne ich schon. Der ist aber fast doppelt so groß wie der sNQ ;-)
Hat aber einige gute Ideen beschrieben und das Ganze wirklich schön abgerundet. Nur das Flugvideo fehlt bisher :cool:

Che Guevara
07.03.2012, 20:50
Erstmal danke für die tolle und ausführliche Erklärung :D
Hab mir den Code gerade angesehen, aber leider funktionierts damit immer noch nicht...
Hast du zufällig mal die Spannung am Pin20 (Ladungspumpe) gemessen? Anfangs (als der Chip noch frisch auf der Platine war), war die Spannung bei ca. 25V (oder warens 50V, sowas in der Größenordnung), jetzt ist sie bei ca. 600mV... Ich glaube, ich habe beide Chips durch meine Brutzelei kaputt gemacht -.-

Gruß
Chris
P.S: Geld ist überwiesen ;) Danke nochmal

deHarry
08.03.2012, 18:26
Erstmal danke für die tolle und ausführliche Erklärung :D
Gerne, dafür ist das Forum doch da :)


Hab mir den Code gerade angesehen, aber leider funktionierts damit immer noch nicht...
Hast du zufällig mal die Spannung am Pin20 (Ladungspumpe) gemessen? Anfangs (als der Chip noch frisch auf der Platine war), war die Spannung bei ca. 25V (oder warens 50V, sowas in der Größenordnung), jetzt ist sie bei ca. 600mV... Ich glaube, ich habe beide Chips durch meine Brutzelei kaputt gemacht -.-
Och nö! Beide Chips verbrutzelt? Wie denn das?
Was hast du denn alles noch gemacht, in der Zeit wo ich meine Antwort geschrieben habe??
Sind alle Pins richtig angeschlossen? (Lupe, ich nehme dafür auch immer gerne mal ein USB-Mikroskop)

Ja, die Spannung habe ich mal gemessen, waren 25 V.

Che Guevara
09.03.2012, 12:43
Hi,

ich weiß nicht, ob sie kaputt sind, aber mir kommt es so vor... Hab den einen mit der Hand und Lötkolben gelötet, den anderen mithilfe der Herdplatte.... Ich werd beide nochmal ablöten und nochmal neu machen, evtl. funktionierts ja dann...
Ja, 25V warens bei mir auch mal kurzzeitig, dann ist aber die Spannung dauerhaft auf ca. 600mV gesunken.
Pins habe ich auch kontrolliert, sollte passen. Es könnte höchstens sein, dass unter dem Chip sich einige Brücken gebildet haben. Habe aber Flußmittel verwendet.

Gruß
Chris

deHarry
09.03.2012, 12:47
Hi Chris,
ich erinnere mich, dass du deine Platinen selbst erstellst, richtig?

Der MPU hat eine metallene Bodenplatte (die aber NICHT angelötet werden soll!).

Die Platte kann natürlich Leitungen, die unter dem Chip durchlaufen und ohne Lötstopplack sind, kurzschließen.

Che Guevara
09.03.2012, 14:04
Ja, die Platinen sind selbst gemacht.
Ich dachte, diese sollte auf GND gelegt werden.... Das könnte einiges erklären -.- Ich werds mal ausprobieren, danke für den Tipp :D
Es laufen zwar keine Leitungen durch, aber ich habe eine große GND Fläche eingefügt.

Gruß
Chris

Willa
09.03.2012, 15:45
Tja, immer wenn ich denke, ich hätte mal ein bisschen Zeit fürs Hobby, kommt was dazwischen... Also die Idee mit dem Xmega finde ich gut. Es macht mir wahrscheinlich auch deutlich mehr Spaß einen ganz neuen Controller zu implementieren, als nur die IMU zu wechseln. Und ich kann immer noch nicht glauben, dass die MPU IMUs genauso gut sind wie die ADXRS. Aber das werden wir ja im Vergleich sehen können. Was noch zu klären wäre: Unterstützt BASCOM den

XMega32A4 bei allen uns wichtigen Features? Bisher kann man noch nicht so extrem viel über xmegas in Zusammenarbeit mit Bascom lesen.
Das Datenblatt klingt ja fast zu schön um wahr zu sein... Und QFN wollte ich schon immer mal löten :-)

Hier habe ich mir ein paar Infos angeguckt:


What you need to get started with ATXMEGA and BASCOM-AVR





1.
The latest Bascom-AVR FULL Version (The Demo Version of Bascom-AVR do not support ATXMEGA).




2.
An evaluation board like the Atmel AVR XMEGA® Xplained evaluation kit or any other ATXMEGA evaluation board with PDI (Program and Debug Interface) header.




3.
A Programmer like AVRISP MKII or any other PDI or JTAG programmer which support ATXMEGA.




4.
Latest AVR-Studio 4.X or 5.X only for setting fuse bits and to flash Bootloader to ATXMEGA.





5.
Programming the ATXMEGA can be done direct from BASCOM-IDE. See also LIBUSB (http://avrhelp.mcselec.com/libusb.htm) for further information.





http://avrhelp.mcselec.com/atxmega.htm

Klingt alles ganz gut und ich hätte Lust das zu probieren. Es wäre natürlich auch schön wenn man ein paar der zenhtausend timer im XMega gleich für saubere PWMs nutzen könnte...

Picojetflyer
09.03.2012, 16:02
Und ich kann immer noch nicht glauben, dass die MPU IMUs genauso gut sind wie die ADXRS.

Das kannst du, der MPU fliegt sehr gut.


http://vimeo.com/38034959

Gruß

Matthias

Aber das Thema mit der Zeit, das kenne ich auch zu gut.

Che Guevara
09.03.2012, 16:13
Hallo,

ich habe mir erst kürzlich ein Breakout Board für den ATXMega64A3 gemacht, der Unterschied zum ATXMega32A4 sollte nicht allzu groß sein.
Bis jetzt habe ich folgendes in BASCOM ausprobiert:
- Event System
- DMA
- PWM
- PWM einlesen ohne CPU
- TWI
- UART
- ADC
- DAC
Funktioniert alles bestens, wenn man erst mal ein bisschen drin ist ;)
Allerdings muss man ersteinmal die ganzen Optionen zum Einstellen verstanden haben (bsp: DMA), um hier etwas sinnvolles zu entlocken.
Programmiert habe ich mit einem ATAVRISP mk2, das einbinden in BASCOM war ganz einfach, aber dazu gibts auch in der HELP Datei einige Hinweise.

Gruß
Chris

Willa
09.03.2012, 17:39
Das klingt doch alles sehr vielversprechend... @Matthias: Du hast doch den direkten Vergleich zwischen adxrs und mpu. Merkst du keine Unterschiede? Beim Gain irgendwelche unterschieldichen einstellungen?
@Chris: Dann können wir ja evtl. auf deine Xmega Erfahrungen zurückgreifen... :-D

Picojetflyer
09.03.2012, 18:18
Vom Gefühl her würde ich sagen rauscht der MPU mehr. Wirkte anfänglich unruhig. Die PID Werte musste ich auf über die Hälfte reduzieren.

deHarry
09.03.2012, 20:45
Hi Chris!

ich habe mir erst kürzlich ein Breakout Board für den ATXMega64A3 gemacht, der Unterschied zum ATXMega32A4 sollte nicht allzu groß sein.
Kann man dein Breakout-Board schon als GUIDE missbrauchen?
Dann würde ich mir das Enflechten sparen können. Ich habe zwar schon angefangen, das Schaltbild ist soweit fertig, aber da müsst ihr nochmal drüber schauen.


Bis jetzt habe ich folgendes in BASCOM ausprobiert:
- Event System
- DMA
- PWM
- PWM einlesen ohne CPU
- TWI
- UART
- ADC
- DAC
Funktioniert alles bestens, wenn man erst mal ein bisschen drin ist ;)
Das klingt wirklich super. Ich war nur von den technischen Daten her, ohne was getestet zu haben, der Meinung, dass dieser Chip ideal für eine GUIDE geeignet ist.
- Die Erzeugung der 6 PPM-Signale (ja, PWM... aber zur Unterscheidung gegenüber den echten PWM-Signalen, die wir für die Bürstenmotoren benötigt haben) sollte problemfrei möglich sein, so dass Willa seine I²C-PWM-Umsetzer in den wohlverdienten Ruhestand setzen kann.
- UARTs hat das Teil ebenfalls zur Genüge, so dass auch jede Menge Sensoren zusätzlich zu dem Satellit-Empfänger angeschlossen werden können.
- Mehrere Hardware-I²C-Ports, einer für den/die Sensor/en, einer für die Motorsteuerung, falls Willa daran festhalten will.
- 32 MHz Oszillator intern -> Dampf genug, außerdem den externen Oszi eingespart
- läuft mit 3,3 V -> keine Probleme mit der I²C-Komm zum Sensor.
Aber Achtung wegen der Kopplung zur GUI -> Spannungsbegrenzer und Längswiderstände (z.B. blaue LEDs) vorsehen.
Nochmal Achtung: Verstehen die normalen ESCs (die mit mehr als einer LiPo-Zelle arbeiten) die 3,3 V-Signale?

Die Programmierung über PDI erfordert einen anderen Programmer (als ich bisher verwendet habe), den gibt es aber an allen Ecken für 30 €uronen von DIAMEX (DIAMEX ALL AVR).

deHarry
09.03.2012, 20:57
Vom Gefühl her würde ich sagen rauscht der MPU mehr. Wirkte anfänglich unruhig. Die PID Werte musste ich auf über die Hälfte reduzieren.
Das kann ich über Messwerte belegen! :-(

Ich kann zwar noch keine Absolutwerte liefern (dazu bräuchte ich eine GUI, die ich selbst programmieren kann, also in Basic und ohne OO), aber qualitative Signale kann ich euch zeigen:
21806

Ich habe hier das niederwertige Byte des Y-ACC-Sensors nach Excel verfrachtet. Der Sensor liefert 16bit-Werte.
Die Werte lese ich so schnell aus, wie das Programm auf dem Atmel das hergibt. Dehalb kommen immer 4mal die gleichen Werte (was man in dieser Darstellung nicht sieht). Das Bild zeigt 2000 Werte und nahezu der volle Wertebereich des unteren Bytes der Sensorwerte wird ausgenutzt. Wohl gemerkt bei ruhig auf dem Tisch liegenden Copter.

Die gleichen Signale kommen auch aus dem auf dem sNQ Shorty verbauten MPU-6050 raus, Willas Software kann damit aber anscheinend umgehen, zumindest der Stretcho (identischer Hardwareaufbau, identische Software) flog damit ja prima.

Picojetflyer
09.03.2012, 21:59
Willas Software kann damit aber anscheinend umgehen

Ja das geht wunderbar, braucht aber eine absolut saubere Abstimmung und gut gewuchtete Propeller. Der IMU ist sehr empfindlich auf Vibrationen und scheint schnell zu übersteuern. Harry, du hast damit ja schon Erfahrungen gemacht :)

Gruß

Matthias

Che Guevara
09.03.2012, 22:09
Also meine "Erfahrung" würde ich gerne mit euch teilen :D Würde mir riesig Spaß machen, da mal etwas mitzuarbeiten.
Also rein theoretisch könnte man mein Board schon als IMUGuide verwenden, allerdings ist es ziemlich groß und jeder einzelne Pin ist extra herausgeführt. Aber testen sollte man damit die komplette Hardware können ;)
Was man aber noch testen müsste:
- vertragen die ESCs die 3V3 vom AVR
- laufen die ESCs auch noch mit 500Hz (PWM), ansonsten würde man nur auf 250Hz kommen, was doch etwas wenig ist...

Gruß
Chris

bendh
10.03.2012, 02:14
Es freut mich sehr, dass meine Anregung zu einem anderen Prozessor zu wechseln eine solche Resonanz ausgelöst hat.
Mir ging es dabei aber darum, den Kopter möglichst klein zu bauen, also mit einer Lipo-Zelle. Damit erübrigt sich meiner Meinung nach die Frage, ob die 3V3 ausreichend sind für die ESCs, da die kleinen für eine Zelle ausgelegt sind.
Dass es ESCs gibt, die mit 500Hz zurecht kommen, beweisen andere Konzepte ja zur Genüge. Wenn man Wert darauf legt, das Ganze mit mehr als einer Zelle zu betreiben, sollte es möglich sein, mit Opencollectorausgängen, die dann von den grösseren ESCs stammenden 5V zu verwenden.
Ich stehe auch jederzeit zur Verfügung, wenn es um mechanische und elektronische Aufbauten und Tests geht, nur Bascom und programmieren kann ich nicht.
Ich habe schon einige Kopter zum Fliegen gebracht, überwiegend Wiikopter, aber auch mit MPU6050.

zum testen, habe ich gerade gesehen: http://flyduino.net/MPU6050-Break-Out-onboard-33V-reg


Gruß Bernd

Andree-HB
11.03.2012, 14:42
....habe eben endlich entdeckt, wo Eure Reise mit den Quadrocoptern hingeht :
http://www.youtube.com/watch?v=eA4U-6GmkUw

:-)

Picojetflyer
11.03.2012, 14:55
....habe eben endlich entdeckt, wo Eure Reise mit den Quadrocoptern hingeht :
http://www.youtube.com/watch?v=eA4U-6GmkUw

:-)

Als großer BTF Fan find ich das einfach nur SCHARF!!

deHarry
12.03.2012, 19:52
Jungs, lasst euch nicht ablenken!! DeLorian... wo kommen wir denn hin?? ;-)

Ich habe mal auf die Schnelle die notwendigen Bauteile auf eine Platinenfläche geschüttet und zwei Rahmen drumherum gezeichnet:

21814

Schaut mal drüber und gebt mir durch, was noch fehlt (Stecker oder sowas z.B.).
Das Schaltbild ist leider etwas zu groß (ich habe ein A3-Blatt verwendet) als dass man in einem JPG Wesentliches erkennen könnte.
Die Sortierung der Signale an die Pins des µC ist vorläufig. Kann sein, dass eine andere Anordnung der Stecker ein optimaleres Layout ergibt.
Wahrscheinlich habe ich auch noch den einen oder anderen Anschluss vergessen...

Links oben ist der Akku-Anschluss.
Der große 6pinner ist für IR- oder Deltang-Empfänger, kann für Willa wegfallen.
Links unten sitzt der Comm-Anschluss für die GUI.
Rechts unten Comm zum Satellit-Empfänger.
Ah, eben gemerkt. Der I²C-Stecker für die I²C-PPM-Konverter fehlt noch, alternativ (und vorzugsweise) die 6 Stecker für die ESCs, wenn die PWM direkt im µC erzeugt wird.

Den µC habe ich erst mal als TQFP Version genommen, den gibt es bei Reichelt. Die (kleinere) QFN Version lässt selbst die kleinere Platine verschwenderisch groß erscheinen :-).

Falls einer von euch einen Großhändler kennt, der die QFN Version im Sortiment führt... ich würde drei Stück XMega32A4 oder auch XMega64A4 abnehmen, falls eine Sammelbestellung zusammen kommt.

Picojetflyer
12.03.2012, 20:21
Schau mal bei digikey.com habe dort sehr gute Erfahrungen gemacht. Ich meine die haben die xmega in allen Varianten um die 5 Euro das Stück.

bendh
12.03.2012, 20:53
Sehr wichtig für ein gutes Flugverhalten finde ich, dass der MPU6050 in die Mitte der Platine kommt, wenn später die Platine mittig im Kopter befestigt wird.
Dann würde ich auf den Resettaster verzichten, habe ich bei Arduino noch nie gebraucht.
Warum noch über den Umweg I²C-PPM Konverter nachdenken, lieber die ESCs gleich mit PWM ansteuern.
Der Akku braucht auch nur 2 PINs.
Warum braucht der Empfänger mehr als 3 Anschlüsse?
Wo werden die ESCs angeschlossen?

Ich kann nur R und Cs sehen, braucht der XMega keinen Quarz?

So viel von mir. Bernd

Picojetflyer
13.03.2012, 04:44
Ich kann nur R und Cs sehen, braucht der XMega keinen Quarz?

So viel von mir. Bernd


Nöö, das macht der xMega intern bis 32Mhz. Aber mit den Convertern bin ich deiner Meinung. Selbst mit nur 8Bit Auflösung fliegt das ganze und der xMega schafft bestimmt mehr.

deHarry
13.03.2012, 17:55
Schau mal bei digikey.com habe dort sehr gute Erfahrungen gemacht. Ich meine die haben die xmega in allen Varianten um die 5 Euro das Stück.
Hallo Matthias,
einfach nur kaufen ist ein Ding, aber was muss ich für Versand und Verpackung bei denen löhnen? Das sollte schon in einem Verhältnis zueinander stehen, das mir nicht die Tränen in die Augen treibt. Meine bisherigen Erfahrungen bei Bestellungen in USA waren da eher unmotivierend.

deHarry
13.03.2012, 18:12
Hallo Bernd, danke für das das Feedback!

Sehr wichtig für ein gutes Flugverhalten finde ich, dass der MPU6050 in die Mitte der Platine kommt, wenn später die Platine mittig im Kopter befestigt wird.
Ok, das muss ich prüfen. In die Platinenmitte bekomme ich den Sensor nicht, solange der TQFP Atmel im Spiel ist. Bestenfalls auf die Mittellinie. Wird besser, wenn der QFN erhältlich ist.

Dann würde ich auf den Resettaster verzichten, habe ich bei Arduino noch nie gebraucht.
Das ist aber kein Arduino, sondern ein leerer Atmel µC. Die gleiche Argumentation hat Sven auch mal verfolgt, dann hat er doch einen tatser auf dem Board spendiert. Ist einfacher, wird aber tatsächlich nur benötigt, um den Bootloader aufzuspielen, wenn sonst immer alles funktioniert.

Warum noch über den Umweg I²C-PPM Konverter nachdenken, lieber die ESCs gleich mit PWM ansteuern.
Na ja, der Einstieg in dieses Design war der Hilferuf von William, und der hat nun mal I²C-PPM-Konverter an seinem Bolt. Bevor er nicht abwinkt, sollte deshalb fairer Weise die Möglichkeit vorhanden sein, diese Teile anzusteuern.

Der Akku braucht auch nur 2 PINs.
Das war der Versuch, die Akkus ohne formschlüssige Stecker wenigstens etwas verpolungssicher zu machen. Der Footprint kann beliebig mit zwei- oder dreipoligen Steckern bestückt werden.

Warum braucht der Empfänger mehr als 3 Anschlüsse?
Reminiszenz an das sNQ Design. Da gibt es keine Leitungen zwischen Baugruppen, also muss der Empfänger gesteckt werden können. Der Deltang Empfänger hat seine wichtigen Signale auf beide Enden eines 6poligen Anschlusses verteilt, also muss der Stecker 6 Pole haben.

Wo werden die ESCs angeschlossen?
Diese Stecker fehlen noch, schrieb ich schon.

Ich kann nur R und Cs sehen, braucht der XMega keinen Quarz?
Hat Matthias schon beantwortet. Genau, der XMega hat einen internen Oszillator der vorzugsweise mit 32 MHz läuft, der aber ziehbar zw. 30 und 52 MHz ist. Cool.

Picojetflyer
13.03.2012, 19:20
Hallo Matthias,
einfach nur kaufen ist ein Ding, aber was muss ich für Versand und Verpackung bei denen löhnen? Das sollte schon in einem Verhältnis zueinander stehen, das mir nicht die Tränen in die Augen treibt. Meine bisherigen Erfahrungen bei Bestellungen in USA waren da eher unmotivierend.

Die Versandkosten sind ein Argument (18Euro) . Aber ab 65 Euro liefert Digikey gratis und immer per UPS innerhalb von (meistens) 2 Tagen. Und das aus der USA. Wie gesagt ich bin sehr zufrieden mit denen, einmal hat der UPS Mensch sogar bei mir angerufen und sich bei mir entschuldigt das er es nicht bis 11Uhr schafft weil auf den Paket Terminlieferung drauf stand.

deHarry
13.03.2012, 19:25
Ok, dann brauchen wir also nur noch etwa 4-9 Abnehmer für die anderen 9 XMegas, und die kostenlose Lieferung ist gebongt :-)
Schaun wir mal, ob sich da was zusammen braut...

[edit]
Ich habe vor ein paar Tagen versucht, mit Hinweis auf die bescheidene Liefersituation solcher QFN-Chips hier in Deutschland, bei Atmel direkt Muster der QFN Version des XMega32A4 anzufordern, bzw. alternativ einen Händler hier in D genannt zu bekommen.
Wir hatten eine gute Zeit mit interessanten Mailwechseln... :)
Bin gespannt, ob ich wirklich meine drei Muster geliefert bekomme, oder ob die nächste Instanz entscheidet, dass das doch keine gute Idee ist...

Der XMega64A4 ist übrigens lt. Atmel schon wieder obsolet und wird nicht mehr bemustert.

Picojetflyer
14.03.2012, 04:45
Qfn ist für meine zittrigen Hände leider zu klein. In TQF würde ich zwei nehmen.

Arkon
14.03.2012, 09:46
Ich plane auch schon an einem neuen Copter, der natürlich auch ein neues Hirn braucht. Würde daher wohl auch 2 vll. auch 3 abnehmen. Die Platine dann natürlich auch :)

Happy Jack
14.03.2012, 12:45
Guten Tag,


ich bin durch einen Hinweis von bendh auf diese Seite gestossen. Da ich mich schon länger mit den XMegas befasse, würde ich gern zum Layout zwei Hinweise geben:

Bitte unbedingt einen Quarz vorsehen, bestücken muss man ja nicht. Ich fahre meine XMega-Boards alle mit 40MHz. Das erreicht man bei einem 8MHz-Quarz mit PLL Faktor 5.
Zweitens wäre es schön, wenn am PORTA PIN0 ein Spannungsregler z.B. LM4040 2.5V mit Vorwiderstand vorgesehen wird. Hier gilt auch wieder: Bestückung optional. Schaut mal bei BostonAndroid (http://bostonandroid.com/EVAL-04.html) nach, die machen das auch so. Bei denen heißt der reservierte Platz "Landing".

An einem Board hätte ich auch Interesse.


Gruß Hans

deHarry
14.03.2012, 17:55
Hallo Hans, willkommen im Forum! :-)

Der Tipp mit der externen Referenzspannung ist goldrichtig und kam zur rechten Zeit, vielen Dank!

Hast du Hintergrundinfos zu dem Wunsch, einen externen Quarz vorzusehen? Die Spannungsreferenz ist auf der von dir verlinkten Seite schön beschrieben und begründet, über den externen Quarz habe ich nichts gefunden.

So einen Prügel, wie er von BostonAndroid vorgesehen ist, wirst du hier bei uns nicht finden, aber prinzipiell spricht nichts dagegen. Außer vielleicht, dass das Platz ist, den wir eventuell nicht haben. Ich denke an meine diversen Designs, bei denen ich immer wieder wegen dem Quarz und seinen Kondensatoren unschöne Kompromisse eingehen musste. Da habe ich natürlich das Vorhandensein des internen (schnellen) Oszillators mit Handkuss begrüßt.

deHarry
14.03.2012, 18:41
Hallo zusammen!

Off Topic, aber interessant:
http://www.geo.de/GEOlino/technik/68357.html

Ich habe insgeheim damit gerechnet, dass jetzt gleich wieder William aus irgend einer Ecke auftaucht... kam aber nicht :-)

Arkon
14.03.2012, 20:06
Der Festo SmartBird. Sehr geiles Teil. Habe ich schon letztes Jahr auf der Hannovermesse live gesehen. Aber das Innenleben ist der Wahnsinn. Strukturen aus CFK mit einer Dicke von <1mm und Stegbreiten, die nicht viel größer sind. Die Mechanik ist dabei noch relativ "simpel".

bendh
14.03.2012, 20:11
mein Vorschlag, wir ändern das Thema und bauen auch so einen Vogel. :-)

Happy Jack
14.03.2012, 20:32
Hallo Hans, willkommen im Forum! :-)

Danke!

Bei der Genauigkeit und Temperaturstabilität der CPU-Taktfrequenz möchte ich einfach sicher sein, dass es passt.

Ein Kopter soll bei -10°C genauso zuverlässig fliegen wie bei 30°C. Das kann m.E. ein interner Taktgenerator gar nicht leisten, da hilft auch DFLL wenig, wenn man keine externe Referenz vorsieht.

Vorher sollte man die Errata zwei Mal lesen, ob es überhaupt funktionieren kann. Hier (http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=95538) gibt es einen Hinweis zur Genauigkeit.

Wäre halt schön, wenn für einen Quarz Platz wäre, es darf natürlich auch SMD sein.

Hans

deHarry
14.03.2012, 20:39
Ok, überzeugt.
Bernd, du liest mit, nehme ich an? :-)

bendh
14.03.2012, 20:49
ja, ich lese mit.
Ich bin gerade am Layout. Ich habe auch noch zwei 1k Widerstände für I²C eingebaut. Wichtig finde ich zu klären:
wollen wir möglichst klein bleiben oder möglichst viele Anschlüsse ermöglichen?

Welche Anschlüsse liegen eigendlich fest und wo kann man Ports noch tauschen, z.B. weil sie sich dann besser verdrahten lassen.

deHarry
14.03.2012, 21:01
Also meine Wunschliste sieht folgender Maßen aus:

So klein wie es geht, ohne dass es einem beim Entflechten die Tränen in die Augen treibt
Mindestens 6 PWM-Ausgänge mit je einem 1,27 mm pitch Stecker für die ESCs
Der 6polige Stecker für die sNQ-Empfänger
Stecker für Satellite-Empfänger für Willa
Stecker für GUI-Comm
I²C-Anschluss (Stecker) für Leute mit Konverter und keiner Lust, die für den ersten Test rauszuschmeißen ;)
Dieser Anschluss auf einem eigenen I²C-Port. Den MPU-60x0 wollen wir nicht stören
5 LED-Ausgänge (3 für Statusanzeigen wie bei Willas Original-GUIDE, 2 für Positionslichter
jetzt gerade gelernt: externer Quarz (SMD, Formfaktor wie bei sNQ, gibt´s bei Reichelt)
auch neu gelernt: Externe Analogreferenz für Akkuüberwachung
Akkuanschluss wahlweise 2-, 3- oder 4-polig
Resettaster
wenn möglich einseitig entflochten


Ich hoffe, ich habe nichts vergessen.

Festgelegt sind eigentlich nur die beiden Hardware-I²C- und die beiden Seriell-Ports, der Rest kann wahlfrei vertauscht werden, wenn das ein günstigeres Layout ergibt. So war jedenfall mein Plan.

Ah, die PWM-Ausgänge liegen ebenfalls auf dedizierten Pins, diese aber wieder wahlfrei den einzelnen Motoren zuzuordnen.
... und das Programmier-Interface (PDI, also Reset und Pin 34) ist fest vorgegeben.

Dann noch die Analog-Referenz auf AREF (Pin 40).

Bei Größe fällt mir noch ein, dass Willa 32 x 42 mm in den Ring geworfen hat (das ist die größere Dimension in meinem "Layout"), damit die Platine in seinen Bolt passt. Das gehört als Punkt oben dazu.

Happy Jack
14.03.2012, 21:53
Dann noch die Analog-Referenz auf AREF (Pin 40)

Falls differentiell gemessen werden soll, es könnte ja passieren, dass die Erkenntnis, das zu tun, erst später einsetzt - dann muss GND an PIN1 vom PORTA. Dass sollte dann durch eine Lötbrücke oder Jumper möglich sein. Aber besser nichts anderes wie LEDs oder so, an dieser Stelle vorsehen.

Zweimal I2C bedeutet, dass die Motoren dann an PORTD kommen, 6x HW-PWM heißt, dass 2 Timer draufgehen. Der A4 ist schon ein wenig eng an dieser Stelle.

Hans

deHarry
16.03.2012, 21:45
Zweitens wäre es schön, wenn am PORTA PIN0 ein Spannungsregler z.B. LM4040 2.5V mit Vorwiderstand vorgesehen wird.
Hallo Hans,

hast du vielleicht schon die Eagle-Bibliothek für dem LM4040 erstellt oder "gefunden"?

Falls nicht, muss ich den Chip halt selbst erstellen, aber das muss ja nicht unbedingt sein... :cool: :)

[edit]
Bernd war so nett seine Lib zu schicken, keine Aktivität mehr notwendig. Danke Bernd!

Willa
18.03.2012, 15:26
Hi,
da bin ich wieder, war snowboarden. Schön, hier geht es ja richtig voran. Ich würde Haralds Anforderungsliste erweitern um:
* Teile sollten beschaffbar und verfügbar sein.
* So klein und einfach (Anzahl Bauteile) wie möglich, notfalls doppelseitiges Layout...?
Die Platinengröße 32x42mm wäre das absolute Maximum was in den Bolt passen würde. Eine gute Größe wäre 26x36mm wenn irgendwie machbar.


I²C-Konverter können gerne wegfallen wenn eine mindestens 90%ige Chance besteht, dass die Hardwaretimer 6 PWMs mit ca. 500 Hz erzeugen können. Das kann ich mangels Erfahrung aber selber nicht Einschätzen. Für einen Spektrum-Satelliten bräuchte man eigentlich auch noch einen eigenen Timer, um die Datenpakete des Empfängers sicher zu synchronisieren.
Ich bin mir relativ sicher, dass die ESCs mit 3.3V Signalen versorgt werden können. Das sind doch auch nur atmels, und 3.3V sind glaube ich weit genug weg von der Schwelle die als High erkannt wird.
Warum man die externe Spannungsreferenz braucht habe ich noch nicht ganz verstanden... Kann man nicht einfach die interne 1V Referenz nehmen...? Die Spannungsmessung des Akkus erfordert ja nun nicht unbedingt eine sonderlich hohe Präzision. Die Notwendigkeit eines Quarzes verstehe ich ebenfalls noch nicht. Wegen der Temperaturstabilität? Nur mal kurz vorschnell in den Raum geworfen: Angenommen, alle anderen Komponenten (Spektrum Empfänger, ESCs etc.) hätten selber auch keinen Quarz, wäre es dann nicht besser wenn die Taktfrequenz aller Teile ansatzweise gleich schwankt?

Auf jeden Fall bin ich auch an Platinen, µCs und IMUs interessiert falls noch Mitbesteller gesucht werden!

Picojetflyer
18.03.2012, 15:54
I²C-Konverter können gerne wegfallen wenn eine mindestens 90%ige Chance besteht, dass die Hardwaretimer 6 PWMs mit ca. 500 Hz erzeugen können.

Da besteht sogar bei den kleinen Brüdern vom xMega eine 100% Chance das es die Hardware Timer schaffen. Mein Quad nutzt für 4 Motoren nur zwei 8 Bit Timer. Gemessen hab ich 490Hz.

Gruß

Matthias

Che Guevara
18.03.2012, 18:27
Hi,

mit einem ATXMega64A3 kannst du 20(!!!) Hardware PWMs mit 500Hz gleichzeitig ausgeben ;) ich denke, das genügt für die meisten Anwendungen :D
Wenn man einen PWM-Channel weglässt (also 4 PWMs weniger), hat man einen Timer frei, mit dem man den Spektrum-Satelliten synchronisieren kann.
Für die ADC Referenz könnte man auch einfach eine 10µH Ferritspule (0805) benutzen, so mache ich das. Wenn man diese an AREFA anschließt, kann man die Referenz auch für ADCB verwenden. Noch einen 100n Kerko dazu und fertig ist eine akzeptable Referenzsspannung, welche so auch von ATMEL vorgeschlagen wird. Somit kann man sich den extra Spannungsregler sparen.
bzgl. Quarz: Ich denke nicht, dass die Schwankungen des internen Quarzes soooo groß sind, zumindest hatte ich bis jetzt damit noch keine Probleme. Selbst bei einem Temp. Unterschied von 25°C funktionierte die serielle UART Übertragung bei mir noch fehlerfrei (115200 Baud).

Gruß
Chris

deHarry
19.03.2012, 17:50
Hallo Zusammen!
Die zusätzlichen Bauteile (Quarz und Referenz) fressen so gut wie kein Brot.

Bernd (bendh) hat das WE dazu genutzt, eine handvoll Layouts aus dem Hut zu zaubern, so dass für jeden was dabei sein sollte.
Und die Größe der Layouts ist - auch mit den beiden in Frage stehenden Kandidaten - eindeutig NICHT das Problem :-)

Aber Bernd soll selbst zeigen, was geht...

[edit]
Was Bestellungen von µC und MPU angeht, bin ich raus. Heute habe ich meine QFN-Muster von Atmel bekommen und MPUs habe ich noch einen halben Berg hier liegen.

Picojetflyer
19.03.2012, 18:33
waren die Muster bei Atmel unkompliziert zu bekommen? An wen hast du dich gewendet?

deHarry
19.03.2012, 18:47
Ich bin über die HP in den Kundenbetreuungsbereich (Samplebestellung) und habe den Jungs freudlich erklärt, dass ich gerne hier in D einen Händler wüsste, bei dem ich in kleinen Stückzahlen den XMega32A4 oder den XMega64A4 im QFN-Gehäuse kaufen kann, ohne für Versand und Hantierung Unsummen aufwenden zu müssen.
Das zugehörige Projekt habe ich ebenfalls vorgestellt und betont, dass es auf das kleine Gehäuse ankommt, da momentan ein Wettrennen um den Bau des kleinsten Quadrocopters weltweit im Gange sei ;-)
Dass es das TQFP-Gehäuse bei Reichelt gibt habe ich noch angegeben, und alternativ würde ich mich über die Zusendung von 3 Mustern freuen.

So im Groben lief das... Es ging noch ein bisschen hin und her, weil die noch alles Mögliche abgefragt haben (wieviele Stück in den nächsten 3 Monaten geordert werden würden und so Sachen). Das habe ich wahrheitsgemäß erklärt (Open Source Projekt, einige Nachbauwillige, aber keine Chance belastbare Zahlen zu geben und mit Sicherheit keine Abnahmegarantie für Chips in Tausender Stückzahlen).

bendh
19.03.2012, 21:23
na dann will ich mal meine Ergebnisse kund tun.
Ich habe mich allerdings entschlossen den Sensor auf ein extra Board zu setzen.
Damit bin ich flexibler, die nächste Generation steht ja schon in den Startlöchern.
Ich bitte alle Fehler zu melden :-)

Gruß Bernd218582185921860

bendh
19.03.2012, 21:30
Das hochladen war nicht so einfach, gibt es da eine Größenbeschränkung?

deHarry
19.03.2012, 21:36
Hallo Bernd,
ich habe mich ja schon per PM geoutet, aber das kann man nicht oft genug kund tun: Super Leistung - Vielen Dank!

Vielleicht noch zwei, drei Hinweise zu den Schaltungen:
Das Schaltbild gehört zum linken Layout. Das hat Anschlüsse für 4 Motoren (direkt für die ESCs, keine Konverter notwendig).
Quarz und Spannungsreferenz sind beide Male enthalten, müssen aber nicht bestückt werden.
Auch die "große" Platine passt in Williams Flächenvorgaben für den Bolt.
Es gibt auch ein Layout mit MPU onBoard (auch das passt noch so eben in Williams Vorgaben).

deHarry
19.03.2012, 21:39
Das hochladen war nicht so einfach, gibt es da eine Größenbeschränkung?

Soweit ich weiß gibt es Beschränkungen, aber die greifen erst jenseits von 1 MB oder zumindest von etlichen 100 kByte.

bendh
19.03.2012, 21:48
Danke für das Lob, ich bin froh auch etwas beitragen zu dürfen.

Einmal sind 4 Motoren möglich, einmal 6 und da sind auch alle freien Ports herausgeführt. Ich brauche z.B. noch einen Anschluß für die Strommessung.
Das sind auch erstmal Entwürfe, da geht sicher noch mehr, ich denke da auch an MultiWii - Fans. Wenn Hans sich die Teile angeschaut hat und auch Willa zufrieden ist, bin auch ich es.
Ich mache auch gerne neue Entwürfe, wenn noch Wünsche offen sind, gerne auch mit Sensor auf dem Board und wenn es unbedingt jemand will, 2lagig.
Ich kann aber maximal eine halbe Europaplatine groß werden, außer es sponsert jemand die Eagle-Lizenz :-)

Gruß Bernd

Willa
20.03.2012, 14:24
Hi, das Layout sieht super aus. Auf dem Schaltplan kann ich leider kaum was erkennen. Für jeden ESC hast du zwei Pins vorgesehen? GND und das PWM Signal? Meines Wissens nach ist GND nicht notwendig, die ESCs sind ja bereits über den Akku mit GND verbunden. Und diese zusätzliche verbindung schafft eher eine GND-Schleife, und das ist angeblich nicht so schön.
Dsa mit dem Sensor auf nem Extra-Board ist ne gute Idee, hoffentlich sind die zukünftigen IMUs auch 3.3V und I²C....
Könntest du mir die Eagle Datei mal schicken (t r a s h c a n @gmx.com, ohne Leerzeichen), oder eine höhere Auflösung der Bilder hier reinstellen? Sonst erkenne ich so schwer etwas.

Picojetflyer
20.03.2012, 16:30
Vielleicht ist Bernd so nett und Zippt das Layout und den Schaltplan und lädt das hoch :pray:

Gruß

Matthias

bendh
20.03.2012, 20:27
so hier alles gezippt.
Bitte die Wünsche schreiben.

bendh
20.03.2012, 20:32
ich werde es noch lernen

Willa
21.03.2012, 13:01
Bitte die Wünsche schreiben.
Ich schaue mir grad das 6-Motorenboard an:



Der Satellitenempfänger braucht einen 3-poligen Stecker mit Verbindungen zu RXD1, GND und +3.3V
Den PDI Programmieranschluss würde ich als Stecker vorsehen, nicht als Lötpads.
Die beiden Widerstände des Spannungsteilers an ADC2 haben nur beispielhafte Werte?
Die Stecker für die ESCs brauchen keine GND Verbindung. Selbst wenn jemand auf die Idee kommen würde Motoren und Controllerplatine mit verschiedenen Spannungsquellen zu betreiben, müsste er die GNDs von den Spannungsquellen verbinden. Wäre daher also auch in diesem Fall kein Problem.
Als Solderpads für die Stecker gehen viereckige Pads sehr gut. Die benötigen viel weniger Platz als die ovalen, gehen aber trotzdem gut zu löten. Auch sieht der Footprint der Stecker im Layout riesig aus. ich nehme an, es ist nicht so einfach einen 1.27mm Stecker in der Bibliothek zu finden?
Sind eigentlich alle Teile (außer der IMU) bei Reichelt erhältlich?

Die platine scheint ja sehr bald fertig zu sein, wie kommen wir an ein paar Exemplare?

deHarry
21.03.2012, 16:59
Hallo Willa,
ich antworte mal unkonventionell im Originaltext, sonst braucht das zu viel Platz und wird unleserlich...



Der Satellitenempfänger braucht einen 3-poligen Stecker mit Verbindungen zu RXD1, GND und +3.3V

Touché, das habe ich voll verpennt.


Den PDI Programmieranschluss würde ich als Stecker vorsehen, nicht als Lötpads.

Geschmackssache. Für mich sind die Lötpads ideal, weil ich da mit meinem Programmieradapter mit Federnadeln prima adaptieren kann. Aber zumindest eine Überlegung wert.



Die beiden Widerstände des Spannungsteilers an ADC2 haben nur beispielhafte Werte?

Da der ursprüngliche Plan ein sNQ werden sollte, muss man die Werte für "größere" Copter beispielhaft nennen, korrekt. Mit einer LiPo-Zelle passen die Werte.



Die Stecker für die ESCs brauchen keine GND Verbindung. Selbst wenn jemand auf die Idee kommen würde Motoren und Controllerplatine mit verschiedenen Spannungsquellen zu betreiben, müsste er die GNDs von den Spannungsquellen verbinden. Wäre daher also auch in diesem Fall kein Problem.

Bezgl. gemeinsamer Masse stimme ich vorbehaltlos zu. Wenn du aber nur eine Leitung zwischen Controller und ESC verwendest, spannst du eine schöne Schleife (bzw. deren sechs) auf, die ggf. Störungen einfängt. Lieber die Masse mitführen.



Als Solderpads für die Stecker gehen viereckige Pads sehr gut. Die benötigen viel weniger Platz als die ovalen, gehen aber trotzdem gut zu löten. Auch sieht der Footprint der Stecker im Layout riesig aus. ich nehme an, es ist nicht so einfach einen 1.27mm Stecker in der Bibliothek zu finden?

Exakt das war der Grund, diese Teile zu verwenden. Im richtigen Leben werden ohnehin Pfostenleisten eingelötet, man kann beim Layouten den weißen Rahmen geflissentlich ignorieren.



Sind eigentlich alle Teile (außer der IMU) bei Reichelt erhältlich?

Soweit ich weiß ja.

Kurze Erklärung:
Die neue GUIDE ist eine Gemeinschaftsproduktion. Das Schaltbild ist (in wesentlichen Teilen) von mir, Bernd hat das (die) Layout(s) daraus gezaubert.




Die platine scheint ja sehr bald fertig zu sein, wie kommen wir an ein paar Exemplare?

Chris (Che Guevara) hat angeboten, Musterplatinen für uns zu machen.
Ich würde ebenfalls mindestens zwei haben wollen.
3 MPU-6000 kann ich noch abgeben.

bendh
21.03.2012, 17:23
Wenn der Satellitenempfänger auch an PIN 12, RXD_COMM funktioniert, ist das ändern einfach.
Den PDI Anschluß braucht man doch nur einmal, oder?
Widerstände siehe Harald.
Bezüglich der ESC-Anschlüsse bin ich auch Williams Meinung, für die Stecker und Pads muß ich versuchen welche selbst zu malen.
Bei den Platinen wäre ich an einer interessiert.

Gruß Bernd

deHarry
21.03.2012, 17:26
Den PDI Anschluß braucht man doch nur einmal, oder?
Kennt schon jemand einen Bootloader für einen XMega? Gibt es XMega-Arduinos?

bendh
21.03.2012, 17:58
Siehe:
https://github.com/akafugu/Xmegaduino

bendh
21.03.2012, 18:02
sollten wir vielleicht erst ein Testboard entwerfen, um die Software auszuprobieren?
Wir haben doch alle auch noch grössere Kopter.

deHarry
21.03.2012, 19:01
... aber vielleicht keine Lust, für einen Testaufbau den teuren Sensor zu verlöten. Ich zumindest nicht :-)

Was spricht dagegen, deine Layouts zum Test zu verwenden?
...
...
Ah, jetzt ja! Du hast ja den Sensor abgesetzt entflochten, da zieht zumindest das Argument mit dem verplemperten Sensor nicht.
...
Aber zurück zum Board.
Ein Testboard hätte höchstens noch drei bis fünf Stecker mehr, ansonsten hast du doch schon alles an Kontakten rausgeführt was geht.
Also ich verwende das Layout mit onBoard MPU (das du hier bisher nicht veröffentlicht hast), eventuell mit kleinen Änderungen an Feinheiten.

So werde ich z.B. noch den INT-Ausgang des MPU an den XMega führen. Ich bin gerade am testen, ob ich damit sauberere Signale aus dem Chip auslesen kann, als wenn ich, wie bisher, einfach blind dann lese, wenn das gerade im Code "dran" ist.

deHarry
21.03.2012, 19:03
Siehe:
https://github.com/akafugu/Xmegaduino
Kennt jemand die dort beschriebenen (und per Bootloader unterstützten) Boards?
Sind die kompatibel zu unserem Entwurf?

bendh
21.03.2012, 19:39
hier noch die von Harald angesprochene Version. " Sensor on Board "

bendh
21.03.2012, 19:45
Testboard deshalb, weil ich nicht weiß ob die Software mit den jetzt verwendeten Anschlüssen zurecht kommt, oder ob es besser andere wären.
Ich dachte halt so wie ein Arduinoboard zum Ausprobieren.
Es wäre schön, wenn sich auch mal jemand über die Software äußern würde, machbar oder nicht?

Gruß Bernd

Willa
21.03.2012, 20:20
Also ich würde als "Testboard" ebenfalls das hier bereits diskutierte verwenden. Wenn Chris uns die Prototypen ätzen könnte wäre das doch optimal. Ansonsten müsste man nur wieder ein Board mehr erstellen, löten etc. Wenn auf dem Prototypen was falsch ist muss man halt mit Kupferlackdraht ran, aber immerhin hat man dann ein einsatzbereites Board. Ich wäre für den PDI Stecker, da der Bootloader wieder eine andere Baustelle ist, und zu testen ob der ganze Krempel überhaupt funktioniert erfordert viiiiele Programmiertests. Da ist mir halt ein Stecker lieber. Auch weiß ich noch nicht wie das im Xmega mit dem Eeprom funktioniert. Das kommt alles später, erstmal muss der Xmega einen Copter zum fliegen bringen.

Es wäre schön, wenn sich auch mal jemand über die Software äußern würde, machbar oder nicht?
Die paar Sachen die ich bisher gelesen habe klingen sehr vielversprechend. Wie das aber im Detail mit PWMs, UARTs, I²C usw. funktioniert weiss ich noch nicht. Bootloader und EEprom sind wieder anders. Aber wir sind ja nun ein paar mehr Leute (z.T. sogar schon mit xmega erfahrung), vielleicht kann sich jeder auf einen Teil konzentrieren und wir führen die Lösungen dann Schritt für Schritt zusammen.

Was mir noch einfällt: Bei meinen layout mache ich die Solderpads für SMD Teile immer eine Ecke länger. Dann komme ich besser mit dem Lötkolben dran. Sind die Pads der IMU lang genug?

deHarry
21.03.2012, 20:35
Was mir noch einfällt: Bei meinen layout mache ich die Solderpads für SMD Teile immer eine Ecke länger. Dann komme ich besser mit dem Lötkolben dran. Sind die Pads der IMU lang genug?
Wenn Bernd das Pad von mir verwendet hat, dann sind die Pads länger als Original und lang genug (Sven und ich haben mit diesen Pads schon insgesamt 5 Copter gelötet).

bendh
21.03.2012, 20:39
Also gut, dann überarbeite ich das Board mit den 6 Motoren ( je ein Anschluß ) und dem extra Sensor für 1,27 mm Stecker (oder besser Buchse, gegen Kurzschlüsse beim Absturz :-) ), die nehmen auch nicht mehr Platz weg als die Pads.
Die wichtigen Pads bei der IMU sind schon etwas länger. (da war ich zu langsam)

Weitere Wünsche??
Ich kann auch zwei oder drei verschiedene Layouts machen.

Gruß Bernd

deHarry
21.03.2012, 20:44
Testboard deshalb, weil ich nicht weiß ob die Software mit den jetzt verwendeten Anschlüssen zurecht kommt, oder ob es besser andere wären.
Ich habe das Schaltbild nach bestem Wissen und Gewissen so ausgelegt, dass die Ports passend zur Aufgabe gewählt sind.
Also einen HW-UART für den Empfänger (ok, hier muss noch die Beschaltung des Steckers geändert werden), einen weiteren HW-UART für die Kommunikation zur GUI die beiden UARTs können vertauscht verwendet werden, wenn die Stromversorgung besser an den GUI-Stecker gebracht werden kann , die sechs HW-PWM-Ausgänge für die ESC-Ansteuerung, einen HW-I²C-Port für den MPU, einen weiteren HW-I²C-Port für den potentiellen Versuch von Willa, seine ESCs über die Konverter anzusprechen.

Den Kleinkram (im Wesentlichen sind das noch die LEDs) habe ich dann noch auf die restlichen freien Ports verteilt und dabei versucht, kurze Leitungen zum geplanten Einbauplatz (der LEDs z.B.) zu ermöglichen.
Reset, Quarz, PDI sind vorgegeben.

Also, ich würde sagen, mit dieser Beschaltung können wir ins Rennen gehen.

deHarry
21.03.2012, 20:52
Also gut, dann überarbeite ich das Board mit den 6 Motoren ( je ein Anschluß ) und dem extra Sensor für 1,27 mm Stecker
?? Welcher extra Sensor? Habe ich einen oder mehrere Posts übersehen?


Weitere Wünsche??
Eine Leitung von Pin 12 des MPU nach Pin 25/26/27 des Atmel -> Interrupt wenn neue Sensordaten im Ausleseregister stehen. Damit kann dann auch der MPU-interne Fifo verwendet werden. (Keine Ahnung, ob wir das nutzen können, aber wenn es Willa packt, dann findet er bestimmt raus, wie er an seine Euler- und sonstigen magischen Zahlen im MPU ran kommt, und die werden, glaube ich, über das Fifo ausgespuckt).

bendh
21.03.2012, 23:14
William möchte, glaube ich gelesen zu haben, auch lieber den Sensor auf einem extra Board.

Willa
22.03.2012, 10:44
William möchte, glaube ich gelesen zu haben, auch lieber den Sensor auf einem extra Board.
Ja. Ursprünglich hätte ich es auch schicker gefunden nur ein Board inkl. Sensor zu haben. Aber Bernd hat recht, die Sensoren ändern sich dauernd (bleiben aber hoffentlich bei I²C und 3.3V). Somit hätte man ein board mit höherer Habwertszeit. Außerdem kann man so den Sensor besser lagern. Ich würde das Hauptboard mit Kunststoffschrauben vibrationsgedämpft anbringen. Dann kommt das IMU Board mit doppelseitigem Schaumklebeband oben auf den xmega drauf. Diese doppelte Entkopplung könnte was bringen. Vielleicht auch für den SNQ, denn dort sind die motoren ja "direkt an die IMU geschraubt".


Eine Leitung von Pin 12 des MPU nach Pin 25/26/27 des Atmel -> Interrupt wenn neue Sensordaten im Ausleseregister stehen
Harald, wie ist das denn bei der IMU? Wie schnell kommen da neue Werte raus? Etwas weiter oben im Thread hast du geschrieben, dass du oftmals die gleichen Werte ausliest. D.h. die Daten kommen lansamer als mit 500Hz? Wenn dem so ist, ist das für den PID Regler natürlich ziemlich schlecht. Besonders für den D-Anteil, der ja zwei aufeinanderfolgende Werte vergleicht. Zu wissen wann neue Werte da sind ist also ziemlich wichtig.

Ich würde jetzt bei Reichelt mal die benötigten komponenten bestellen (Harald, hast du noch eine IMU für mich?)
Ich habe gelesen, dass der AVR ISP mk2 PDI unterstützt und auch direkt mit BASCOM funktioniert. Den gibt es bei Reichelt:
http://www.reichelt.de/Programmer-Entwicklungstools/AT-AVR-ISP/index.html?ACTION=3&GROUPID=2969&ARTICLE=45040&SHOW=1&START=0&OFFSET=16&
Allerdings steht dort im Datenblatt nichts von PDI... Ist dass der richtige? Gibt es funktionierende Alternativen?

Willa
22.03.2012, 10:56
Wie schnell kommen da neue Werte raus?
Im datenblatt des MPU600 lese ich beim Gyro:
OUTPUT DATA RATE Programmable 4 - 8000 Hz

und beim ACC:
OUTPUT DATA RATE Programmable Range 4 - 1000 Hz



The Sample Rate is generated by dividing the gyroscope output rate by SMPLRT_DIV:
Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or 7), and 1kHz when the DLPF is enabled (see Register 26).
Note: The accelerometer output rate is 1kHz. This means that for a Sample Rate greater than 1kHz, the same accelerometer sample may be output to the FIFO, DMP, and sensor registers more than once.


Was habt ihr da in euren fliegenden Coptern eingestellt?

bendh
22.03.2012, 12:13
Noch etwas kleiner

Willa
22.03.2012, 13:08
Noch etwas kleiner
Sieht echt super aus, richtig kompakt. Harald muss sich dann noch mal äußern ob Pin12 der IMU wirklich gebraucht wird, oder ob man vieleicht die Refresh rate der IMU hochsetzen kann. Pin12 an die Steckerleiste zu bekommen ist scheinbar etwas Aufwand...

bendh
22.03.2012, 13:32
ich muß gestehen, dass ich bis jetzt nur MultiWii-Kopter mit der MPU6050 in die Luft bekommen habe.
Mit der Software von Harald gibt es nur sehr kurze unruhige Flüge die, wenn ich sie nicht schnell beende, mit einem Überschlag enden.
Es hilft bis jetzt auch nicht die Werte in der GUI zu verändern, da wird alles zwar träger, aber auch nicht fliegbarer.
Es könnte aber auch seine Impulserzeugung sein, evt. ist sie nicht schnell genug. So flogen meine Kopter, wenn die ESCs nicht geeignet waren.
Zum testen verwende ich aber immer dieselbe Mechanik und ändere nur die Software. Beides, Willa und Wii Software läufen auf einem ATmega 328.
Ich habe aber keine Ahnung von der Software und habe meine Änderungen im Arduino-Sketch beim Wiikopter immer mit ausprobieren erreicht.

Gruß Bernd

Che Guevara
22.03.2012, 15:27
Hi Willa,

den selben Programmer habe ich mir vor kurzem auch bei Reichelt bestellt. Anfangs hatte ich auch bedenken, weil im DB nichts von der PDI Schnittstelle steht, aber er kanns ;) Die Einbindung in BASCOM ist auch ganz einfach und in der Hilfe von BASCOM findet man eine gute Anleitung, auch bzgl. des Treibers usw....
Falls du Fragen zur Programmierung des XMegas hast, stehe ich gerne zur Verfügung. Habe schon fast mit allen Schnittstellen gearbeitet.
Eine Frage habe ich aber noch:
Wäre es nicht sinnvoll, den MPU6000 zu verwenden und diesen über die SPI Schnittstelle auszulesen? Ich werde das heute mal testen. Damit wäre der Kontrollloop nochmal schneller, da man auf das Senden der Adresse verzichten könnte und der Sensor bis zu 1Mhz Taktrate funktioniert.

Gruß
Chris

EDIT:
Habe gerade mal deinen Code vom Bolt auf einen XMEGA64A3 mit MPU6000 (I2C) umgeschrieben und an den PC angeschlossen. Es funktioniert ;)
Natürlich ist jetzt noch kein Empfänger dran und auch keine Motoren, aber die PWM funktioniert (6 mal Hardware PWM mit 500Hz und 16Bit Auflösung) und die Sensorwerte werden in der TRIGuide angezeigt. Einziges Manko:
Der Sensor liefert 16Bit Werte, somit müsste man einige Variablen noch anders definieren und auch die OFFSET-Berechnung kann wegfallen (MPU gibt bereits Integer aus) und eben noch ein paar Kleinigkeiten. Aber im Prinzip war das eine Änderung innerhalb 20Minuten. Wenn Interesse besteht, würde ich den Code (von Willa!!!) reinstellen.

bendh
23.03.2012, 07:33
Hallo Chris,

das sind ja tolle Neuigkeiten.
Kommst du mit dem von mir erzeugten Layout zurecht, oder soll ich da noch etwas anpassen?


an alle:
ist das letzte Layout in Ordnung, oder hat noch jemand Wünsche?
Nur eine Quattro-Version oder bestimmte Pads auf Stecker oder noch kleiner oder....

Gruß Bernd

Che Guevara
23.03.2012, 07:54
Hallo Bernd,

hm ich habe bis jetzt noch nie ein EAGLE Layout gedruckt und geätzt, aber das sollte kein Problem werden. Aber könntest du mir bitte einen Gefallen tun? Ich weiß leider nicht, wie man einen Design Rule Check in Eagle macht. Könntest du für den Mindestabstand von Kupfer zu Kupfer (also Leiterbahn - Leiterbahn, Leiterbahn - Loch, SMD Pad - Leiterbahn, usw...) 0.15mm (also ca. 6mil) eingeben und den Test durchlaufen lassen? Es wären zwar auch geringere Abstände möglich, aber ich möchte gerne informiert sein ;)
Ich habs gerade selbst probiert, aber irgendwie kommen bei mir 113 Fehler. Teilweise wird der Abstand eines SMD-Pads mit sich selbst angezeigt xD

Gruß
Chris

EDIT:
Wäre es noch möglich, dass du eine "Automasse" einfügst, damit ich etwas Natriumpersulfat sparen kann? Auch das kann ich leider nicht, da ich noch nie mit Eagle gearbeitet habe.

EDIT2:
Habe gerade versucht, das Layout mal auszudrucken, jedoch habe ich dabei ein Problem: Ich habe den Hacken bei "Schwarz" gesetzt, trotzdem wird es nur sehr blass-blau ausgedruckt, fast nicht sichtbar... Wahrscheinlich muss man es anders machen, oder?! Ich habe die ganz normale "Drucken" Funktion verwendet.

bendh
23.03.2012, 09:10
Hallo Chris,

da hast du dir aber etwas vorgenommen, dieses Layout auszudrucken und zu ätzen, ist doch alles ziemlich eng und klein.
Kannst du auch Lötstoplack aufbringen? Das ist wohl nötig um den Sensor ohne Kurzschluss zu löten.
Automasse? Wegen dem bisschen Ätzmittel sparen, aber auf der anderen Seite sollen die Kopter das schwere Kupfer schleppen?
Zum Ausdrucken:
du darfst nur die Layer anzeigen lassen, die du wirklich brauchst, also 1, 17, 18 und höchstens noch 20.
Du siehst ja auf dem Schirm was noch übrig bleibt. Also oben links unter dem i das Display für Layer öffnen, dann Keine drücken und dann einfach einmal 1 und OK, du siehst dann was übrig bleibt.
Dann bei Drucken Schwarz und bei mir auf dem Laserdrucker sieht es ganz gut aus.

Gruß Bernd

deHarry
23.03.2012, 12:35
Hallo Jungs, ihr seid mir leider etwas zu schnell... das richtige Leben fordert zwischendurch auch mal seinen Tribut ;-)

Aber ich versuche mal, auf die Postings seit meinem letzten Post zu antworten...

Ok, das mit der Updaterate des Sensors habt ihr ja schon selbst raus bekommen: 8 kHz für die Gyros, 1 kHz für die ACCs.
Die sNQs fliegen bei Sven mit voller Samplerate, also keine Dämpfung aktiviert. Mein sNQ flog damals mit eingeschalteter Dämpfung (der MPU hängt ein Filter vor die Ausgabe der Werte), was impliziert, dass die Samplerate auch bei den Gyros auf 1 kHz runter gesetzt wird. Was dabei bei den ACCs passiert habe ich nicht gelesen, evtl stehts nicht drin oder ich hab´s vergessen.

Ankopplung des MPU an den Atmel: SPI ist zwar 2,5 mal schneller bei der Übertragung, man sollte aber mal überschlagen, was das letztlich bringt. Kann ich bei Gelegenheit nachtragen, habe gerade keine Lust lange rum zu rechnen.

Den IRQ habe ich verdrahtet, um ausschließen zu können, dass das von mir immer beobachtete Rauschen auf den ACC-Werten von unkoordiniert ausgelesenen Halbworten verursacht wird.

"Refreshrate des IMU hochsetzen" ist mir nicht geläufig, Willa hat die Maximalwerte angeführt, schneller gibt der MPU nichts aus.
Mit ein bisschen Magie an den Registern des MPU kann man maximal 1000 Werte in ein internes Fifo ablegen lassen und das dann in einem Rutsch so schnell wie möglich auslesen (in diesem Betriebsmodus (bis zu 500 Integers in einem Rutsch) kann ich mir einen positiven Effekt durch schnellere Übertragung per SPI tatsächlich vorstellen. Bei 5 Integers in jedem einzelnen Durchlauf ist der Unterschied eher unbedeutend (nur Bauchgefühl, sollte wie gesagt mal jemand durchrechnen).

Als Programmer habe ich mir den DIAMEX ALL-AVR von Reichelt geholt, der soll die XMegas per PDI programmieren können.

deHarry
23.03.2012, 12:52
ist das letzte Layout in Ordnung, oder hat noch jemand Wünsche?
Nur eine Quattro-Version oder bestimmte Pads auf Stecker oder noch kleiner oder....
Hallo Bernd,
also das machst du wirklich Klasse! :-)

Eine kleine Anmerkung habe ich noch zu deinem letzten Layout.
Ich lege die Masse bei einseitigen Layouts immer als Ring komplett außen rum, wenn es sich einrichten lässt.
So wie du jetzt entflochten hast, "baumelt" der Quarz ganz am Ende ewig weit weg vom Akku massetechnisch in der Luft rum.
In gewisser Weise gilt das auch für den MPU.
Andererseits sitzt direkt im Pfad vor dem Quarz der Atmel, der durch die Schaltvorgänge an seinen Ausgängen die Masse ziemlich in Unruhe versetzt.

Würdest du auf 12 Uhr die Masse (an der Referenz vorbei mit dicker Leitung) zum Ring schließen, wäre das "Rumbaumeln" weg.

Gibt es dazu andere Meinungen? Oder Bestätigungen? Würde mich interessieren, ob ich mit dieser Betrachtungsweise alleine dastehe.


[edit]
Du hast verschiedene der Kondensatoren als 0402 verbaut (die 4 Blockkondensatoren um den Atmel herum), alle anderen aber auf 0603 belassen.
Absicht? Vermutlich. Der Hintergedanke dabei?

deHarry
23.03.2012, 12:56
Automasse? Wegen dem bisschen Ätzmittel sparen, aber auf der anderen Seite sollen die Kopter das schwere Kupfer schleppen?
Na ja, den Trick mit der Massefläche habe ich auch angewandt, als ich noch selbst geätzt habe. Die Ersparnis an Ätzmittel ist nicht zu verachten, es muss ja nicht nur um das gesparte Geld gehen, man tut auf diese Weise auch der Umwelt was Gutes.

Das gesparte Gewicht, wenn man die Fläche komplett frei ätzt, ist hingegen wahrscheinlich zu vernachlässigen.

@Chris:
Du musst ein Polygon um die komplette Fläche herum legen und dann den Ratsnest-Befehl ausführen.

21900


[edit]
ACHTUNG!!
Entweder den Einbauplatz des Quarzes sperren (ein Rect im Layer "tRestrict (41)" um den Quarz herum legen), so dass dort kein Kupfer flächig verlegt wird, oder das flächig belegen komplett weg lassen.

Ich habe leider offenbar das Layout des Quarzes falsch erzeugt, so dass die Pads (die ich gegenüber den Originalpads durch Überlagern mit Kupferflächen vergrößert habe) beim Fluten mit Kupfer kurzgeschlossen werden.

Willa
23.03.2012, 15:26
EDIT:
Habe gerade mal deinen Code vom Bolt auf einen XMEGA64A3 mit MPU6000 (I2C) umgeschrieben und an den PC angeschlossen. Es funktioniert :wink:
Natürlich ist jetzt noch kein Empfänger dran und auch keine Motoren, aber die PWM funktioniert (6 mal Hardware PWM mit 500Hz und 16Bit Auflösung) und die Sensorwerte werden in der TRIGuide angezeigt. Einziges Manko:
Der Sensor liefert 16Bit Werte, somit müsste man einige Variablen noch anders definieren und auch die OFFSET-Berechnung kann wegfallen (MPU gibt bereits Integer aus) und eben noch ein paar Kleinigkeiten. Aber im Prinzip war das eine Änderung innerhalb 20Minuten. Wenn Interesse besteht, würde ich den Code (von Willa!!!) reinstellen.
Super, wäre schön wenn du den hier reinstellst. Da habe ich dann nicht mehr so viel zu tun mit dem ändern. Wenn das letzte Byte wie Harry beschrieben hat eh nur rauschen ist, kann man das ja auch weglassen... Ich werde mir das dann mal angucken.
@Harald: Hast du noch eine MPU IMU über? man bekommt die ja schon wieder nirgends...
@All: Ich habe die nächsten zwei Wochen sturmfrei hier bei mir... D.h., ich kann ohne verständnisslose Blicke (die sind ja zum Teil auch gerechtfertigt...) ein paar Nachtschichten einlegen. Es wäre also super wenn wir es schaffen möglichst bald eine finale Platine zu haben, und wenn Chris die ätzen könnte. An der Platine wüsste ich nichts mehr auszusetzen, außer dass man die Borlöcher anders setzen sollte, aber das macht eh jeder selbst. (Chris, sind die genutzen PWM ports die richtigen? Oder muss man da auf irgendwas achten?)

deHarry
23.03.2012, 15:47
Wenn das letzte Byte wie Harry beschrieben hat eh nur rauschen ist, kann man das ja auch weglassen... Ich werde mir das dann mal angucken.
Na ja, lässt du das Byte weg per Ausmaskieren, dann springen die Werte um 256.
Rechnest du das Byte raus per Teilen, werden die Werte entsprechend klein und passen nicht mehr zu deinen Algorithmen.
Ich wäre heilfroh, wenn sich das Thema mal jemand anschaut, der, so wie du, schon den einen oder anderen Copter mit deinem Code zum Fliegen gebracht hat :-)


@Harald: Hast du noch eine MPU IMU über? man bekommt die ja schon wieder nirgends...
Ja, habe ich. Noch 2 übrig.

deHarry
23.03.2012, 16:01
Habe gerade mal deinen Code vom Bolt auf einen XMEGA64A3 mit MPU6000 (I2C) umgeschrieben und an den PC angeschlossen. Es funktioniert ;)
Natürlich ist jetzt noch kein Empfänger dran und auch keine Motoren, aber die PWM funktioniert (6 mal Hardware PWM mit 500Hz und 16Bit Auflösung) und die Sensorwerte werden in der TRIGuide angezeigt.
Super!
Hast du mal auf die Sensorwerte im Sinne von "Rauschen" geachtet? Zappeln die Anzeigen wild rum, oder stehen die wie eine Eins?
Naja, ohne Motoren waren meine Anzeigen in der GUI auch ganz brauchbar...

Che Guevara
23.03.2012, 18:38
Hi,

Code ist im Anhang, da er zu groß für die CodeTags ist.
Es waren auch nicht sehr viele Änderungen, hauptsächlich habe ich die ganzen Variablen für die Regelung von Integer auf Long geändert, damit keine Überläufe mehr vorkommen. Dann noch den MPU integriert, die typischen XMEGA Geschichten eingefügt (Config Priority, Open "COM2", ADC Settings, usw...) und ein paar Änderungen gabs noch bei der GUI Connection bzgl. Skalierung. Aber seht selbst ;)
Zu den PWM Ports:
Beim XMega64A3 gibt es
- TCC0 (Portc.0 - Portc.3)
- TCC1 (portc.4 - Portc.5)
- TCD0 (portd.0 - portd.3)
- TCD1 (portd.4 - portd.5)
- TCE0 (porte.0 - porte.3)
- TCE1 (porte.4 - porte.5)
Aufs Layout habe ich es jetzt nicht angepasst, aber ich denke, bei der Auswahl sollte das kein Problem sein.
@Harald:
Nein, habe ich noch nicht sooo genau gemacht, aber das werde ich mal demnächst machen. Mir stellt sich sowieso die Frage:
Sollte man die Werte der Sensoren entweder auf 12Bit Auflösung (wie im Original) kürzen oder mit den vollen 16Bit rechnen? Dann wäre ggf. der interne Digital Lowpassfilter angebracht. Grundsätzlich sehen aber die Sensorwerte gut aus.
"Rumzappeln" tun sie auf jeden Fall nicht und in der Gui stehen sie wirklich fast wie eine Eins ;)
Info:
Im Code habe ich die "Gyro / ACC Reverse" Funktionen gelöscht, da man das ja dann fest einstellen kann. Das stimmt ggf. noch nicht. Wie gesagt ist der Code sowieso nur ganz Grob abgeändert, aber grundsätzlich funktionierts.

Gruß
Chris

deHarry
23.03.2012, 20:46
An der Platine wüsste ich nichts mehr auszusetzen, außer dass man die Borlöcher anders setzen sollte, aber das macht eh jeder selbst.
Hallo Bernd,
wegen der Bohrlöcher könntest du noch die Leiterbahnen nach innen "biegen", dann wird Raum für die Platzierung der Löcher frei.

So in etwa:
21906

Ich habe hier auch mal probeweise die Masse geschlossen und dem Sensorboard einen Rahmen verpasst.

bendh
24.03.2012, 08:16
So nun die bisher letzte Variante.
Wer es noch kleiner braucht, man könnte die überflüssigen Pads noch weglassen.
Wem es zu klein ist, größer machen kein Problem, ich bin aber auf 80x100 mm beschränkt. :-)
Wenn nun jeder sein OK gegeben hat, könnte man anfangen.

Che Guevara
24.03.2012, 10:34
Hi,

wollte gerade versuchen, die Automasse einzuzeichnen. Habe als erstes alle Layer bis auf 1,17,18 und 20 ausgeblendet und dann ein Polygon um die komplette Platine eingezeichnet. Anschließend bei dem Click auf Ratsnest kommt eine Fehlermeldung,
"Signal 'N$36 enthält ein ungültiges Polygon" beim Klick auf Ok kommt dann "Fehler beim Berechnen der Polygone!". Wahrscheinlich mache ich irgendeinen Fehler. Gibts irgendwo eine kurze Anleitung zu dem Thema oder würde sich jemand von euch bereit erklären, das Layout bei sich schnell zu ändern und dann nochmal hochzuladen?

@Bendh:
Hm so klein finde ich das gar nicht, das ist bei mir Standart, da ich kleinere und filigranere Leiterbahnen einfacher schöner finde ;)

Vielen Dank & Gruß
Chris

bendh
24.03.2012, 14:34
Hallo Chris,

ich hoffe das hilft dir weiter. Ich musste nach dem öffnen nochmal Ratsnest drücken.
Welches Verfahren wendest du an um so enge Strukturen zu belichten und zu ätzen?

Wenn du das wirklich ätzen kannst, wäre bei den Massebahnen noch etwas machbar.

Gruß Bernd

Che Guevara
24.03.2012, 16:23
Hi,

danke, jetzt funktionierts und wird auch richtig ausgedruckt ;)
Also ich belichte mit einem 500W Halogenstrahler (ich hatte nie Probleme damit, die Qualität ist stets gleichbleibend, es ist eine punktuelle Lichtquelle, usw...) ca. 1Min 30Sek lang, danach mit 20g NaOH auf 1l Wasser entwickeln und dann mit einer selbstgebauten Ätzküvette mit NaPS ätzen. Klappt alles wunderbar, selbst 0.05mm dicke Leiterbahnen kann ich ätzen. Nur dann muss ich schon seeeehr genau arbeiten, damit sich nirgends ein Staubkörnchen beim Belichten einschleicht.
Normalerweise verwende ich für Standartleiterbahnen entweder 0.15, 0.20 oder 0.30mm Dicke, kommt auf den verfügbaren Platz und den Strom an.

Natürlich kannst du die Massebahnen noch etwas verengen, für mich ist es kein Problem ;) Dann aber wieder bitte mit einer extra Version für mich, wenns dir keine Ümstände macht :D

Gruß
Chris

EDIT:
Eine Frage an alle: Ich müsste wissen, wer eine LP möchte, damit ich notfalls noch welche Bestellen kann. Und ich wollte wissen, wie ihr sie gern haben möchtet? Gebohrt, nicht gebohrt, einzeln ausgeschnitten, usw... Wäre nett, wenn ihr euch da auf etwas einheitliches einigen könntet.

bendh
24.03.2012, 16:50
Ich hätte gerne je 1 Hauptplatine und 1 Sensorplatine.
Bohren und ausschneiden ist nicht notwendig.

wenn möglich 1mm oder 0,8 mm dick.

Und dann noch eine Kontonummer für die Unkosten :-)

Gruß Bernd

deHarry
24.03.2012, 16:58
HI CHris,


für mich bitte die selbe Combo. Also eine Hauptplatine und eine Sensorplatine und eine Kontoinfo. Die Dicke ist mir egal.

"Nicht ausschneiden" bedeutet was? Ich bekomme alle Platinen aller Besteller??... ;-)
Kaum, oder?

Che Guevara
24.03.2012, 17:56
@Bernd:
Also normalerweise arbeite ich nur mit 1.5mm, d.h. wenn du es dünner willst, müsste ich extra eine Basisplatine bestellen?! Das wären dann aber Mehrkosten in Form der Versandkosten (hab grad selber nix zum Bestellen) und es würde länger dauern ...Möglich wärs aber durchaus ;)
@Harald:
Ok, geht klar ;) Ausgeschnitten bedeutet, dass ich die beiden Platinen nach dem Ätzen voneinander trenne und die Konturen abschneide ;) Übrigens: Jetzt funktionieren schon 2 der 3 MPUs, den Dritten konnte ich noch nicht testen. Der Fehler lag in der Adresse, da ich den AD0 Pin auf Masse gelegt habe und somit ist die Adresse nicht &HD2, sondern &HD0 :)
Ohne DLP des MPU ist schon ein deutliches Wackeln der Werte zu sehen. Heute habe ich mal den Wert durch 64 geteilt, was einer Auflösung von 10Bit entspricht, dann schwankt der Wert nur um 1. Also genauso so genau wie ADXRS610, wenn ich mich nicht irre ;) Bzw. eig sogar noch besser, da ich ja keinen DLP verwendet habe. Willa hatte ja auch einen Tiefpass verbaut. Das Wackeln um 1 Einheit bezog sich ja auf Werte mit Tiefpass :)

Gruß
Chris

bendh
24.03.2012, 18:45
Also gut dann 1,5mm. Dann geht beim Versand wenigstens nichts kaputt.
Wenn es zu schwer wird, dann muß ich sie halt dünner schleifen. :-)

Hier noch eine Teile Liste.

bendh
24.03.2012, 18:56
ich habe noch eine Frage:
welche Frequenz soll jetzt der Quarz eigentlich haben?

Bernd

Che Guevara
24.03.2012, 19:06
Hm also ich wäre ja für den internen 32MHz Quarz, oder aber einen externen 8MHz Quarz dann mit PLL, denn die schnelle Taktrate sollte man IMHO schon ausnutzen! Dadurch wird das System deutlich stabiler.
Die Platinen werde ich noch heute oder morgen fertigen, werden dann am Montag rausgehen ;)

Gruß
Chris

bendh
24.03.2012, 19:54
Chris wenn du es noch ändern kannst, nimm diese Version des Layouts.

Bernd

bendh
24.03.2012, 20:00
@ Happy Jack
Hast du dir das Layout schon angesehen und auf seine Tauglichkeit Richtung WiiKopter geprüft?

Gruß Bernd

EDIT:
Gerade habe ich deine Mail vom Harald bekommen, schreibe mir doch einmal genau was du wo brauchst, also welcher Pin des XMega auf Stecker oder auf Pad.

Happy Jack
24.03.2012, 20:25
@bendh,
Ich kann im Urlaub alles mit verfolgen. Habe aber nur ein iPad dabei, so dass ich die Layouts nicht beurteilen kann. Harald hatte mir einen Teil (analoge Anschlüsse) geschickt. Für eine Wii-Adaption sollte das, was ich bisher gelesen habe, passen. Meine Wünsche bezüglich SPI teile ich Dir am Besten per E-Mail mit.
@Chris,Falls es noch nicht zu spät ist, würde ich gern je ein PCB nehmen, am Liebsten geschnitten und gebohrt. Kann aber erst ab Anfang April Geld überweisen (Urlaub).
Hans

deHarry
24.03.2012, 21:16
Hm also ich wäre ja für den internen 32MHz Quarz, oder aber einen externen 8MHz Quarz dann mit PLL, denn die schnelle Taktrate sollte man IMHO schon ausnutzen! Dadurch wird das System deutlich stabiler.
Kann die PLL aus 16 MHz 32 machen? Also ein 16 MHz Quarz außen dran? So welche habe ich nämlich noch in der Krabbelkiste :-)

Che Guevara
24.03.2012, 21:47
@Harald
Hm sicher bin ich mir jetzt nicht, steht im DB, aber ich denke schon ;) Notfalls ginge ja auch der interne Osc, als Übergangslösung ;)
@Happy Jack
Ja klar, geht in Ordnung ;)
Schaffe es heute sowieso nicht mehr, morgen werde ich sie ätzen.

Gruß
Chris

Arkon
24.03.2012, 23:27
if(deHarry.verfügbare_MPU > 0)
{
Che Guevara_Platinensatz++;
}

(Falls Harry noch einen MPU abgeben könnte würde ich auch gerne einen Satz der Platinen abnehmen)

Che Guevara
25.03.2012, 09:38
Hallo,

ich bin gerade dabei, das letzte Layout auszudrucken. Anschließend fertige ich die erste Platine. Wenn ich fertig bin, stelle ich mal ein Bild online. Zu den Bestellungen:
Die Kontonummer erhält jeder von mir per PN, da ich sie ungern hier rein schreiben möchte. Preis pro Kombination (also Haupt- und Sensorplatine) incl. Versand dachte ich an 5€, ich denke, das ist vertrettbar!?
Wenn ich heute noch alle Platinen ätzen kann, werde ich sie alle morgen versenden. Sollte ich nicht alle schaffen, werde ich sie nach der Reihenfolge der Bestellungen versenden.
@Harald:
Ich habe gerade im DB nachgesehen, zur PLL


10.3.8 PLL with Multiplication factor 2 - 31x

Also die Auswahl des Quarzes ist groß, es geht ein 2Mhz, 4Mhz, 8Mhz, 16Mhz...

Gruß
Chris

EDIT: Momentan habe ich Bestellungen von:
Bernd
Harald
Happy Jack
Sollte ich jemanden vergessen haben oder sollte jemand noch eine wollen, bitte einfach melden.

deHarry
25.03.2012, 11:11
if(deHarry.verfügbare_MPU > 0)
{
Che Guevara_Platinensatz++;
}

(Falls Harry noch einen MPU abgeben könnte würde ich auch gerne einen Satz der Platinen abnehmen)

Hallo Arkon,
tut mir Leid, Willa war schneller, der hat die letzte MPU bekommen.

Ich habe bei Macnica bestellt, die sind sehr freundlich. Vielleicht kannst du ja dort ebenfalls einen Zuschlag bekommen. Mindestabnahmemenge 10 Stk. Meine Kontaktfrau war Victoria dot Naydenova K-Affe macnica pünktchen com ;-)

deHarry
25.03.2012, 11:14
@Harald:
Ich habe gerade im DB nachgesehen, zur PLL


10.3.8 PLL with Multiplication factor 2 - 31x

Also die Auswahl des Quarzes ist groß, es geht ein 2Mhz, 4Mhz, 8Mhz, 16Mhz...
Hallo Chris,

super, vielen Dank!!
Normaler Weise bin ich der Erste, der anderen ankreidet, zu faul zu sein, selbst ins Datenblatt zu schauen... Soll nicht wieder vorkommen :-)

Che Guevara
25.03.2012, 12:12
Kein Problem ;)
Ich habe übrigens gute Neuigkeiten:
1. Alle drei meiner MPUs funktionieren tadellos, nachdem ich sie richtig verlötet hatte (ohne Brücken, etc..) Ich befestige immer erst einen Pin, schaue dann, ob er richtig ausgerichtet ist und wenn ja gebe ich auf einer Seite einen Tropfen Flussmittel (selbst hergestellt aus Spiritus und Kolophonium) hinzu, welcher sich dann unter den MPU schleicht und auf jeder Seite wieder herauskommt. Anschließend gebe ich etwas frischen Lötzinn auf die Lötkolbenspitze und fahre damit zügig auf jeder Seite über die Pins. Ab und zu erneuere ich nochmal das Flußmittel. Damit wärs mir sogar möglich, ohne hinsehen das Teil richtig zu verlöten :D
2. Die Platinen sind fertig. Da ich alle ausgeschnitten habe, ist mir gaaanz selten mal der Dremel verrutscht und es finden sich kleinere Kratzer nur am Rand (!!!) der Platine. Die Funktion wird also keinesfalls beeinträchtigt. Ich werde gleich (nach dem Essen) ein paar Bilder online Stellen. Sollte jemand mit den Kratzern nicht einverstanden sein, solle er sich bitte melden, ich mache dann für den jenigen eine neue Platine.

Gruß
Chris

deHarry
25.03.2012, 12:59
Ich habe übrigens gute Neuigkeiten:
1. Alle drei meiner MPUs funktionieren tadellos, ...
Super, das freut mich! Ich hatte schon die Befürchtung, dass die Dinger doch empfindlicher sind als gedacht...


Die Platinen sind fertig.
WOW!! Cool.

bendh
25.03.2012, 13:00
Ich habe doch die Teileliste reingestellt.
Es ist fast alles bei Reichelt erhältlich, nur der LM4040 hat keine 3V.
Was macht ihr, den nehmen oder erstmal weglassen?

Wegen der MPU, bei Sandner Elektronik gibt es auch welche und wer kein SPI braucht, für den tut es auch ein MPU6050.

Gruß Bernd

@Chris
Super Arbeit, ich freu mich schon.

Che Guevara
25.03.2012, 13:13
Ok, also seit ihr beiden zufrieden? Dann bräuchte ich bitte mal eure Adressen an c h r i s t o p h . m a d l @ w e b . d e [ohne leerzeichen].
Aber eine Frage noch: Momentan ist noch der UV-Positiv Lack auf den Platinen, weil ich keine negative Lötstoppmaske mit Eagle erstellen kann. Wäre jemand so freundlich und würde es mir erklären oder soll ich euch die Platinen einfach so schicken?
Uuuund: Wie groß / klein sind den die Bohrlöcher? Ich habe vorher bei meiner eigenen Platine versucht, ein Loch zu bohren, aber dann habe ich mit meinem 0.8mm Bohrer das ganze Pad weggebohrt -.-

Gruß
Chris

bendh
25.03.2012, 13:34
Leider weis ich jetzt auch nicht wie man diese Lötstoppmaske erzeugt, aber willst du das auch noch machen, das wäre nicht schlecht, dann lässt sich der MPU besser verlöten.
Als Stecker will ich die
http://www.conrad.de/ce/de/product/741104/STIFTLEISTE-1-X-25-POLIG-VERGOL-RM-127
und als Buchsen die hier
http://www.conrad.de/ce/de/product/741211/BUCHSENLEISTE-1-X-25-VERGOL-RM-127

verwenden.
Ich habe gerade nachgemessen, 0,4 - 0,5mm Bohrdurchmesser.

Gruß Bernd

Mail ist raus

Che Guevara
25.03.2012, 14:26
Hm also Lötstopplack kann ich nicht machen, habe ich noch nie gemacht. Dafür entferne ich aber den UV-Positivlack an den Lötstellen. Dieser hat eine ähnliche Funktion wie der normale Lötstopplack. Aber keine Sorge wegen dem Löten. Ich habe meine MPUs vollkommen ohne Lötstopplack gelötet und es war kinderleicht. Man muss sich nur von der Vorstellung trennen, jeden Pin einzeln zu löten. Einfach etwas Flussmittel drauf und einmal mit dem Lötkolben quer drüber. Fertig sind perfekte Lötstellen ohne Brücken ;)
Hm so kleine Bohrer habe ich nicht, mein kleinster ist 0.8mm. Muss ich wohl mal welche Bestellen. Weiß jemand, wo man solch kleine Speerbohrer bekommt?

Gruß
Chris

EDIT:
Habs jetzt mal ausprobiert: Bei voller Auflösung (16Bit) und keinem DLPF schwanken die Werte um maximal 74Digits. Das halte ich für sehr gut, v.a. da die Werte schnell verfügbar sind und eine große Auflösung haben.
Aber ich hätte eine Frage: Gerade habe ich versucht, den MPU6000 über SPI auszulesen. Leider klappts aber nicht. Folgendes habe ich eingestellt:


Config Spie = Hard , Master = Yes , Mode = 2 , Clockdiv = Clk32 , Data_order = Msb , Ss = Auto
Open "SPIE" For Binary As #2

Jedoch weiß ich nicht, welchen Wert ich für Mode nehmen muss? Entweder 2 oder 3.
Außerdem ist mir die Pinbelegung nicht ganz klar, ich habs so:
XMEGA SPI ------------ MPU6000
SCK ------------------ SCL/SCK
MISO ----------------- SDA/SDI
MOSI ----------------- AD0/SDO
SS ------------------- /CS
Stimmt das? Ich habe leider noch nie mit SPI gearbeitet. Desweiteren wollte ich wissen, wie ich die Daten senden soll? So:


Print #2 , 117 '117 ohne "" (Who-I-Am Register)
Input #2 , Test

oder so:


Print #2 , "117" '117 mit "" (Who-I-Am Register)
Input #2 , Test

?

EDIT2:
Habs gerade im web gefunden:
MISO steht für Master In Slave Out
MOSI steht für Master Out Slave In
SDI für Slave Data In
SDO für Slave Data Out
D.h. meine Belegung ist schonmal falsch.

bendh
25.03.2012, 17:03
@Che Guevara

vielleicht hilft dir das weiter:

Che Guevara
25.03.2012, 17:10
Hm nein, leider nicht. Die korrekte Belegung habe ich inzwischen schon herausgefunden, jedoch will mein Programm noch nicht, da ich nicht genau weiß, wie ich die Register senden soll (117 oder "117", Print (-bin)?!).
Trotzdem danke.

Gruß
Chris

deHarry
25.03.2012, 17:52
Hi Chris,

mit SPI habe ich auch noch nicht gearbeitet, aber du musst den MPU in irgend einem Register auf SPI-Betrieb umstellen, wenn ich mich nicht irre.
Genau: Register 106, "The primary SPI interface will be enabled in place of the disabled primary I2C interface when I2C_IF_DIS is set to 1".

In BASCOM musst du zum Senden von SPI-Befehlen SPIOUT verwenden, oder? Vorher noch SPIINIT korrekt einstellen (frag mich nicht wie), dann sollte das klappen.
Die Ergebnisse dann mit SPIIN aus dem MPU lesen.


[edit]
Das gilt für den Mega328p. Eventuell sind die Befehle für den XMega anders? Ja, sind sie... vergiss den Schrieb oben.

Vielleicht noch das (aus der BASCOM Hilfe):
It is very important that you set the pin direction and level BEFORE you use the CONFIG SPI statement. This because the CONFIG SPI will enable the SPI interface and once enabled you can not change data direction/level.

Für die Ausgabe der Registernummer musst du beispielsweise schreiben:
DIM Registervar as Word
Registervar = 117
Print #2, Registervar

(Ohne es getestet zu haben, mir fehlen noch deine Platinen ;-)

Happy Jack
25.03.2012, 19:57
Ich habe doch die Teileliste reingestellt.
Es ist fast alles bei Reichelt erhältlich, nur der LM4040 hat keine 3V.
Was macht ihr, den nehmen oder erstmal weglassen?



Soweit ich das gesehen habe, will den keiner verbauen - nur ich. Falls das doch jemand vorhat, dann auf keinen Fall 3V sondern 2.5V nehmen! Wer die interne Referenz benutzt, um z.B. die Spannung zu messen, sollte mit der 1.6V-Referenz hinkommen. Auf keinen Fall die 1.0V nehmen.

Hans

deHarry
25.03.2012, 19:59
Wegen der MPU, bei Sandner Elektronik gibt es auch welche und wer kein SPI braucht, für den tut es auch ein MPU6050
Hallo Zusammen!

Um euch die Suche zu ersparen: ;-)
Der Laden heißt Sander electronic (www.sander-electronic.de) und die Chips gibt´s dort: http://www.sander-electronic.de/be00085.html
:-)

Willa
25.03.2012, 20:26
Hi,
ich war am WE leider weg, aber ich möchte unbedingt auch eine Platine...! Die sehen auch echt super aus. Ich frage mich nur: warum habt ihr die Massefläche nicht auf Masse gelegt? Ich mache das immer so, aber vielleicht ist das ja ungünstig...? Damit das geht benenne ich das Polygon in Eagle mit GND und drücke dann Ratsnest. Hmm, grad probiert, dann sieht die Platine etwas unübersichtlicher aus man erkennt kaum noch was ein Pad ist und was nicht....
@Chris: wegen Bezahlung und Adresse schreibe ich dir grad ne mail

deHarry
25.03.2012, 21:09
... Ich frage mich nur: warum habt ihr die Massefläche nicht auf Masse gelegt? Ich mache das immer so, aber vielleicht ist das ja ungünstig...? Damit das geht benenne ich das Polygon in Eagle mit GND und drücke dann Ratsnest. Hmm, grad probiert, dann sieht die Platine etwas unübersichtlicher aus man erkennt kaum noch was ein Pad ist und was nicht....
Das ist normaler Weise nicht ungünstig. Im gegebenen Fall hat Chris aber möglichst wenig Kupfer wegätzen wollen, um seine Chemie so wenig wie möglich zu stressen.
Wenn die Fläche als MAsse verwendet werden soll, dann müssen die Pads passend ausgelegt sein, und mit sogenannten Wärmefallen an umgebende Flächen angeschlossen sein. Das Pad hat dann z.B. nur vier schmale Verbindungen/Stege zur umgebenden Fläche (an jeder Seite eine), ist dadurch immer noch als Pad erkennbar... und lässt sich sogar noch vernünftig löten :-).
Ohne diese Wärmefallen muss eine vergleichsweise große Fläche erwärmt werden und das Lötzinn läuft ggf. irgendwo hin.

Che Guevara
25.03.2012, 22:30
Hi,

ich habe die Platinen nur geätzt, nach eurem Layout. Fürs Layout war ich nicht zuständig ;) Mir gings nicht ums unnötige Stressen meiner Chemie, sondern um einen wirtschaftlichen und umweltbewussten Umgang damit. Natürlich hätte ich auch ein Layout mit mehr freien Stellen geätzt, wenn es um die Funktionalität gegangen wäre. Aber um Gewicht zu sparen ist das mehrwegätzen von Kupfer bei einer Dicke von 0.035mm meines Erarchtens nicht geeignet. Wenn ihr eine neue Platine haben möchtet, würde ich auch nochmal welche machen, aber mir erschliesst sich momentan der Unterschied zwischen Massefläche und Nichtmassefläche nicht ganz?! Wenn ihr eine Verbindung des äußeren Kupferrandes mit GND meint, dann reicht doch ein kurzes Stück Draht o.ä.? :D

Gruß Chris

bendh
25.03.2012, 22:30
Auch das wäre möglich, aber ich wollte ja so wenig Kupfer wie möglich, alles überflüssiges GEWICHT :-)

ronco
26.03.2012, 08:28
Hi,

Ist mein erster Post hier :)

Bernd hat mich auf den thread und das forum gebracht. ich habe jetzt noch nicht alles gelesen, aber wenn ich das richtig verstehe wollt ihr einen winzig kopter mit WMC oder auch anderer software? machen. ich hab in der letzten zeit an der WMC mitgewirkt (atmega 32u4 support und vorallem an den hard und software PWM's gearbeitet) bin nur ~hobby programmierer (mache webprogrammierung ist aber nicht wirklich ähnlich ;) ). würde aber meine hilfe bei einem WMC zu was auch immer port anbiten.

habe mir auch so ein mini board gemacht .. allerdings mit dem 32u4. der ist auch Arduino 1.0 kompatibel und von daher passt da die MWC recht einfach. (anhang)

wenn euer board geht werde ich mir da auch eins ätzen.. und bauen. hab allerdings noch ein par fragen.

1. was für vorteile versprecht ihr euch von diesem Xmega im vergleich zu den atmegas? ich weiss die sind schneller und so .. aber bisher hat sich meiner meinung nach gezeigt das die kleinen atmegas für alles ausser komplexe WP GPS navis und so dicke reichen.

2. wollt ihr den mit bürsten oder BL motoren machen?

3. was braucht man um so ein xmega zu flachen? geht das mit nem FTDI wie bei den arduino bootloadern? (hab bisher nur mit den arduinos gebastelt)

.. soweit erstmal ;)

gruß

Felix

Che Guevara
26.03.2012, 13:05
Hi,

heute werde ich die Platinen versenden ;) Je nachdem, wieviel der Versand kostet, wirds evtl. nochmals billiger, mal sehen.
@Harald:
Leider hat das mit dem Register 106 nichts gebracht. Die Pinkonfigurationen habe ich schon vorher drinnen gehabt. Immer wenn ich versuche, das Who-I-Am Register auszulesen, bekomme ich nur eine 0.
@Felix:
Also ich persönlich verspreche mir von den XMegas mehr Geschwindigkeit, eine stabilere Regelung und v.a. möchte ich versuchen, einen Algo einzuprogrammieren, der die Regelparameter selbstständig adaptiert. Dann spielt die Geschwindigkeit eine doch etwas größere Rolle ;) Außerdem braucht man deutlich weniger Interrupts und weniger Hardware (keine I2C-PWM Konverter, kein Quarz, usw...). Als Motoren werden weiterhin BL Motoren verwendet, es wird ja nur die Elektronik geringfügig verändert, nicht der ganze Kopter. Zum flashen der XMegas brauchst du ein Programmiergerät, das PDI unterstützt. Ich habe mir ein AVRISP mk2 gekauft, es gibt aber auch andere Alternativen.

Gruß
Chris

Edit:
Habe vorher schon alle Platinen verschickt ;) Jeder bekommt von mir noch ne Mail wegen Konto und Versandinfo.

Willa
26.03.2012, 18:37
@Chris: Hast du meine email bekommen?

Che Guevara
26.03.2012, 19:33
Also falls du die mit Adresse meinst, ja ;) Hab deine Platine heute schon weggeschickt, genauso wie die von Harald und Bernd. Happy Jack hatte mir keine Mail geschrieben, evtl. bekomme ich ja noch eine.
Ich bin sowieso gerade beim Verfassen der Antwortmail ;)

Gruß
Chris

deHarry
26.03.2012, 20:49
... ich habe jetzt noch nicht alles gelesen, aber wenn ich das richtig verstehe wollt ihr einen winzig kopter mit WMC oder auch anderer software? machen. ich hab in der letzten zeit an der WMC mitgewirkt (atmega 32u4 support und vorallem an den hard und software PWM's gearbeitet) bin nur ~hobby programmierer (mache webprogrammierung ist aber nicht wirklich ähnlich ;) ). würde aber meine hilfe bei einem WMC zu was auch immer port anbiten.
Hallo Felix, willkommen im Board!

Deinen Ausflug in Sachen Auswuchtmaschine habe ich schon erstöbert und anschließend einen eigenen Versuch gestartet, die doch sehr grottigen, 10 mm durchmessenden BLs direkt auf dem sNQ (das ist unser Winzig-Quad) auszuwuchten. Leider ist aber das Rauschen des MPU-60x0 (oder zumindest das der ACC-Sensoren) so hoch, dass ich bisher auf keinen grünen Zweig komme :-(



1. was für vorteile versprecht ihr euch von diesem Xmega im vergleich zu den atmegas? ich weiss die sind schneller und so .. aber bisher hat sich meiner meinung nach gezeigt das die kleinen atmegas für alles ausser komplexe WP GPS navis und so dicke reichen.
Die Idee hinter dem Umstieg war der Wunsch, von den für den Betrieb von 3,3V-MPU-60x0 zusammen mit einem 5V-AtMega notwendigen Levelshiftern weg zu kommen. Das war Bernds hervorbrechende Idee. Dass dann auch noch der bisher verbaute StepUp-Converter (1 Zelle LiPo auf 5 V) und der Quarz wegfallen, brachte dem neuen Design viel Sympathien ein. Bei mir zumindest :-)
Als dann Willa auch noch seinen Hilferuf ins Forum postete, dass er eine neue Steuerung für seinen Bolt braucht, war für mich der Startschuss gegeben, das umzusetzen. Dann sind nach und nach mehrere Leute hier eingestiegen und haben sehr schnell so ziemlich alle Unklarheiten bzgl. des neuen Prozessors verscheucht.
Die Hauptarbeit (das Layout) hat dabei Bernd geleistet.


2. wollt ihr den mit bürsten oder BL motoren machen?
Wie schon erklärt soll die Platine wohl vorwiegend BLs steuern.


3. was braucht man um so ein xmega zu flachen? geht das mit nem FTDI wie bei den arduino bootloadern? (hab bisher nur mit den arduinos gebastelt)
Ich habe mir den Diamex All_AVR gekauft. Der soll das können. Ist noch zu beweisen :)

ronco
27.03.2012, 07:43
...
@Felix:
Also ich persönlich verspreche mir von den XMegas mehr Geschwindigkeit, eine stabilere Regelung und v.a. möchte ich versuchen, einen Algo einzuprogrammieren, der die Regelparameter selbstständig adaptiert. Dann spielt die Geschwindigkeit eine doch etwas größere Rolle ;) Außerdem braucht man deutlich weniger Interrupts und weniger Hardware (keine I2C-PWM Konverter, kein Quarz, usw...) ...


Hallo Chris,

Verstehe noch nicht was ihr mit PWM convertern macht? die AVRs haben doch meisstens geeignete timer mit eben HW PWM kanählen/compare register... mit denen man die PWM geschichte ohne großen leisstungsauwand quasi im hintergrund lauffen lassen kann...
habe grade mal das datasheet von dem 32A4 überflogen .. und der scheint sowas tatsächlich nicht wirklich zu haben?

z.B. der 32u4 hat 6x 16-bit und 3x 11-bit PWM channels .. sind aber nur 2x 11-bit und 4x 16-bit gleichzeitig auf pins nutzbar.

willst du das dann mit der software machen?



Hallo Felix, willkommen im Board!


danke ! :)



Deinen Ausflug in Sachen Auswuchtmaschine habe ich schon erstöbert und anschließend einen eigenen Versuch gestartet, die doch sehr grottigen, 10 mm durchmessenden BLs direkt auf dem sNQ (das ist unser Winzig-Quad) auszuwuchten. Leider ist aber das Rauschen des MPU-60x0 (oder zumindest das der ACC-Sensoren) so hoch, dass ich bisher auf keinen grünen Zweig komme


ja ich weiss auch noch nicht was da wirklich möglich ist .. also wie fein das gehen könnte .. ich denke aber das es auf jeden fall besser ist ein gyro statt eines ACC's zu nehmen .. die gyros reagieren schneller. wenn ich nochmal zeit habe werde ich das nochmal neu und sauber machen ;)




Die Idee hinter dem Umstieg war der Wunsch, von den für den Betrieb von 3,3V-MPU-60x0 zusammen mit einem 5V-AtMega notwendigen Levelshiftern weg zu kommen. Das war Bernds hervorbrechende Idee. Dass dann auch noch der bisher verbaute StepUp-Converter (1 Zelle LiPo auf 5 V) und der Quarz wegfallen, brachte dem neuen Design viel Sympathien ein. Bei mir zumindest
Als dann Willa auch noch seinen Hilferuf ins Forum postete, dass er eine neue Steuerung für seinen Bolt braucht, war für mich der Startschuss gegeben, das umzusetzen. Dann sind nach und nach mehrere Leute hier eingestiegen und haben sehr schnell so ziemlich alle Unklarheiten bzgl. des neuen Prozessors verscheucht.
Die Hauptarbeit (das Layout) hat dabei Bernd geleistet.


auf die level converter kann man verzichten ;) also wenn man nur 3,3v sensoren anschließt reichen da 2k2 pullups zu 3.3v (die pullups im AVR müssen aba aus sein).

kla ist ein 3.3v cpu ne feine sache .. da muss man sich um vieles keine sorgen machen.
ich wäre aber vorsichtig. ein kleiner 1s lipo fällt unter last schnell mal auf 3 oder sogar 2.8v... wenn sich dann der LDO noch 0.1v nimmt wirds manchmal schon knapp.

und soeinen AVR programmer wollte ich eh mal haben :P wird also besorgt.

gruß

Felix

Willa
28.03.2012, 18:26
So, ich habe jetzt alles da (danke für die MPU und die Platinen). Sieht alles sehr schön aus, ist aber echt winzig... Mal sehen ob ich das gelötet bekomme... Auch das Paket von Reichelt ist schon da, d.h. ich könnte eigentlich loslegen. WENN ich nicht vergessen hätte Stift- und Buchsenleisten zu bestellen. Erstaunlicherweise hat Conrad in Bremen die sogar vorrätig, also kann ich wohl morgen anfangen.

Che Guevara
28.03.2012, 19:15
Hi Willa,

ich hoffe, du hast die Platinen unbeschadet erhalten und sie sind in Ordnung?
Mein Hauptproblem ist, dass ich 1. keine Stiftleisten im 1.27mm Raster habe und 2. ich keine solch kleinen Bohrer (0.4mm) auftreiben kann. Wo bekommt man den solche?
Ich habe aber heute schonmal meine Platine gelötet, indem ich Kabel angelötet habe. Funktionieren tuts :) Ich kann sowohl die Werte in der GUI betrachten als auch Settings speichern. Zum Thema PWM:
- Der TCC0 Timer ist bis auf einen Pin vollständig belegt, durch den I2C Bus (für die Motoren, welche man aber auch auf den anderen Bus hängen könnte, da man sowieso immer nur einen Slave gleichzeitig ansprechen kann) und durch den Satellite Empfänger (btw: soll die neue Platine nur noch diese seriellen Empfänger unterstützen oder auch noch die "alten"?)
- Der TCC1 Timer ist komplett mit den beiden LEDs (rot und blau) belegt - eignet sich aber schön zum "ohne PC" debuggen
- Sowohl TCD0 als auch TCD1 (also 6 Kanäle) sind komplett frei und herausgeführt
- Der TCE0 Timer ist zur Hälfte (2 Pins) benutzbar, die andere Hälfte wird durch I2C belegt
Die 3V3 Spannung ist einigermassen sauber, sie schwankt bei mir derzeit nur um 10mV (am LNT). Die Stromaufnahme liegt bei ca. 40mA (mit MPU6000 und 3 LEDs). Was man noch ändern müsste ist das Verhältnis zwischen R3 und R4, da diese Werte für eine Spannung von 4.1V ausgelegt sind. Aber das dürfte das kleinste Problem sein ;)

Gruß
Chris
-

bendh
28.03.2012, 19:44
Ihr glücklichen, könnt schon anfangen :-)

Leider habe ich keine Ahnung welche Pins besser so oder anders belegt hätten seien sollen.
Wenn es sich aber herausstellt, dass es besser wäre die Anschlüsse zu verändern, will ich gerne ein anderes Layout machen.
Das heißt dann halt eine neue Platine, aber besser das, als irgendwelche schlechte Kompromisse.

Bohrer:
http://www.amazon.de/Micro-Mini-Bohrer-0-4mm-Stück/dp/B004CLNUXC
sind aber keine Hartmetallbohrer
http://www.octamex.de/shop/?page=shop/browse&category_id=d11c2b51af0468125d750959b2a4471c
kosten etwas mehr
www.as-toolstore.de
http://www.cnc-modellbaushop.de/werkzeuge.htm

Gruß Bernd

Che Guevara
28.03.2012, 19:54
Hallo Bernd,

ich hoffe, auch du hast meine Platine inzwischen erhalten? :)
Nein, das Layout passt so ganz gut, da alle 6 Pwm Pins direkt nebeneinander liegen und notfalls, falls man scharf auf einen Oktakopter oder Servos o.ä. ist, kann man ja immer noch die 2 Pins von TCE0 oder die 3 Pins von TCC0 verwenden ;)
Ich denke, momentan können wir genug mit der Platine testen und sollten sich dabei irgendwelche unschöne Sachen herausstellen, kann man das Layout immer noch ändern. Momentan sehe ich dazu aber absolut keinen Grund.
Mir ist aber gerade etwas aufgefallen:
Mit den stabilen(!!!) 490Hz PWM ist es unmöglich, einen 2ms breiten Impuls zu erzeugen. D.h. man muss ggf. das untere PWM-Regler-Minimum noch weiter verengen, FALLS die Regler das mögen. Das muss man durch Tests herausfinden. Die PWM Frequenz zu verkleinern halte ich nämlich für keine gute Idee, das wäre ein Schritt in die falsche Richtung. Ich habe im Anhang mal ein paar Bilder der PWM Ausgänge.

Gruß
Chris

EDIT:
Nur zur Info: Der 0.9ms Impuls wurde bei einem Timerwert von 29500 und der 1.8ms Impuls bei einem Wert von 60000 erzeugt. Ich denke, mit dieser hohen Auflösung wird die Regelung sehr feinfühlig sein :D

bendh
28.03.2012, 20:01
Hallo Chris,
nein, leider habe ich noch keine Platine aber alle anderen Teile.
Die Regler lassen sich doch anlernen und bei allen von mir benutzten, ob im Flugzeug oder im Wiikopter hat das bis jetzt funktioniert.
Bei den Reglern ist das größere Problem, dass es nur wenige gibt die die 490Hz schaffen.

Che Guevara
28.03.2012, 20:10
Hm die Platinen wurden heute in Ludwigshafen (laut Briefstatus) bearbeitet...
Ja, anlernen grundsätzlich schon, aber sie akzeptieren eben leider auch nur bestimmte Bereiche. Außerhalb dieser melden die Regler einen Fehler.

Gruß
Chris

deHarry
28.03.2012, 20:13
Hi Chris,

meine Platine ist heute angekommen (vielen Dank nochmal!!) , Teile sollte ich alle haben, aber vor dem Wochenende komme ich wohl leider nicht dazu, irgend etwas damit zu tun.
Einen passenden Bohrer habe ich auch nicht, mein dünnster ist 0,6 mm, aber das sollte funktioneren, ohne dass die Pads weg fliegen. Vielleicht...

Das Layout ist sehr sauber geätzt, Respekt :-)

Einziger "Fehler", der mir bisher aufgefallen ist: Das Massepad am Quarz (rechts unten) ist nicht angeschlossen, diese Leitung war offenbar zu dünn. Du schreibst, alles läuft, also nehme ich an, entweder braucht der Quarz dieses Pad nicht, oder du verwendest den internen Clock.

[edit]
Diese Micro-Pads sind echt grenzwertig. Die Be- und Verarbeitung der vorher verwendeten ovalen Pads ist dagegen ein Kinderspiel. Na ja, mal sehen...

bendh
28.03.2012, 20:17
Einfach mal probieren.
Dann kommt sie wohl morgen.

Gruß Bernd

bendh
28.03.2012, 20:21
Hallo Harald,

messe doch mal nach, bei meinem Quarz sind die beiden Anschlüsse schon intern verbunden.

gruß Bernd

deHarry
28.03.2012, 20:24
Hi Bernd,
wenn dein Quarz ebenfalls von Reichelt ist, spare ich mir das Messen :-)

Che Guevara
28.03.2012, 20:25
Hallo Harald,

Ich bin mir nicht sicher, ob das mit dem 0.6mm Bohrer funktioniert. Ich würde es an deiner Stelle bei einem "unwichtigen" Pin mal probieren.
Vielen Dank :D Das ganze hatte mich anfangs auch sehr viel Geld, Zeit und Arbeit gekostet. Ich habe teilweise einen ganzen Tag lang versucht, das Ätzergebnis zu verbessern. Mein jetziger Standart gefällt mir aber sehr gut.
Ja, das ist mir auch aufgefallen. Diese Leitung habe ich anfangs gar nicht gesehen, ansonsten hätte ich präziser gearbeitet. Ich hoffe, das funktioniert trotzdem. Kannst du mir sagen, wie dünn diese Leiterbahn laut Eagle ist? Ich kann dem Programm leider keinerlei Infos darüber entlocken, auch nicht mit der "Info" Funktion...
Hm ich verwende den internen Oszillator ;) Aber falls der Quarz diese Leitung benötigt, könntest du ja ein kurzes Stück Draht verlegen. Im nächsten Layout (sofern es eins geben sollte) wäre es evtl. sinnvoll, diese Bahn etwas dicker zu layouten, auch im Bezug auf potentielle Nachbauer.
Was meint ihr zu meiner Frage, welche RC Empfänger zukünftig verwendet werden sollen? Nur noch diese seriellen oder auch die alteingesessenen mit Summensignal? Ich bin nämlich am überlegen, ob ich mir nicht eine kleine Platine mit einem Mega8 o.ä. machen soll, die das Summensignal in ein serielles Signal umwandelt?! Die seriellen Daten könnte man dann nämlich völlig im Hintergrund mithilfe des DMAs empfangen, ohne Interrupt.

Gruß
Chris

bendh
28.03.2012, 20:34
mein Quarz ist auch von Reichelt, 16Mhz-X22.
Die Linie ist kleiner als 0.01 inch, war schon so in der Bauteilzeichnung, ich werde es ändern.
Ich fliege nur PPM-Summensignalempfänger von Jeti, da lassen sich die Ausgänge so schön programmieren und die Telemetrie ist auch vorhanden.
So richtig seriell arbeiten doch nur die von ACT und Spectrum, oder?

Che Guevara
28.03.2012, 20:39
Hm, 0.01inch wären aber immernoch 0.254mm. Die Linie sollte schon wesentlich kleiner sein ;)
Ja, ich denke schon. Ich glaube, eine Unterstützung für Summensignal ist weiterhin Pflicht.

Gruß
Chris

deHarry
28.03.2012, 21:06
Die Leitung ist gemessen 0,0035 inch, also 0,106 mm dick.

In Eagle gibt es unterhalb des "Auges" dieses angedeutete Koordinatensystem. Damit setzt du einen Ursprung für die Messung und setzt den Cursor dann im zu messenden Abstand hin. Oberhalb des Zeichenbereiches wird dann unter anderem der Polare Abstand und der Winkel angezeigt.
Damit es genau wird, muss das Raster vorher passend eingestellt werden, sonst rastet die MEssung auf den zu groben Rastern ein und ist verfälscht.

[edit]
Ich denke ebenfalls, dass das Summensignal noch nicht tot ist :-)
Zumindest für den sNQ und meinen Tricopter ist das auf jeden Fall ein Thema, denn ich habe nicht vor, nach grob 20 Flugminuten den bzw. die dafür gekauften Summensignal-Empfänger zum alten Eisen zu legen.

Willa
28.03.2012, 22:43
Hi,
ich spiele auch grad ein bisschen mit Eagle rum. Wenn die jetzige Platine von Harald und Bernd bei allen Temperaturen so funktioniert wie gedacht, dann werde ich noch einen Mini Bolt bauen. Dazu möchte ich die Platine so klein machen wie möglich. Im Moment bin ich bei 24x24 mm, doppelseitig (mit TQFP atmel). Es sieht ja so aus als ob man den Quarz und die Referenzspannung nicht unbedingt braucht. Also habe ich alles (für mich) unnötige von der Platine genommen. Im Moment versuche ich einen MLF44 atmel reinzubasteln. Damit könnte das Ganze bestimmt auf 20x20mm verkleinert werden. Wenn daran noch jemand Interesse hat kann ich meine bisherigen (bescheidenen) Ergebnisse hier gerne mal reinstellen.

Che Guevara
28.03.2012, 22:52
Hi Willa,

was genau meinst du den mit Mini Bolt? Noch kleiner als der jetzige?
Ich würde deine Ergebnisse gerne mal bestaunen, wenns dir keine Umstände macht :D

Gruß
Chris

deHarry
29.03.2012, 17:19
Wenn daran noch jemand Interesse hat kann ich meine bisherigen (bescheidenen) Ergebnisse hier gerne mal reinstellen.
Aber sicher, immer her damit ;-)

Hast du denn deinen Code schon angepasst?

Willa
29.03.2012, 21:11
Hi,
ich bin mit dem MLF Package noch nicht weiter. Und doppelseitig mache ich auch zum ersten Mal. Dauert also noch ein bisschen...
Aber dafür habe ich soeben den ersten xMega meines Lebens zum Leben erweckt :-D Herrlich, 32MHz bei 3.3V X-D
Leider funktioniert mein AVRISP mkII noch nicht in Bascom. Unter AVRstudio geht er, aber BASCOM (2.0.7.3) behauptet der Chip würde nicht gefunden. Muss ich da noch irgendwas besonderes beachten? Ich habe nichts gemacht außer AVRstudio 5.1 mit allen geforderten Komponenten zu installieren und danach Bascom.
Ein 0.6mm Bohrer geht übrigens perfekt, habe ich grad probiert. Wovor mir noch graust sind meine ersten MLF Gehversuche mit einem 20€ teuren IC...
Ist das ne gute Vorgehensweise...: Pads verzinnen, überschüssiges Lot mit Entlötlitze entfernen. Löthonig drauf, IC aufsetzen, 1 Pin anlöten. Mit Lötkolben und wenig Lötzinn auf der Spitze an den Seiten entlangziehen (also ca. so wie bei TQFP). Mein Lötkolben hat ne Bleistiftspitze mit 1mm Spitzendurchmesser. Das ist schon etwas "grob". Geht das wohl...? Allein das Ausrichten des ICs kommt ja schon ans Auflösungslimit meiner Augen...

Hast du denn deinen Code schon angepasst?
Dazu habe ich noch nichts unternommen... Mit bleibt noch eine Woche das Gerät zum fliegen zu bringen, dann wird die Zeit wieder knapper.

Che Guevara
29.03.2012, 21:30
Hallo,

um den AVRISP mk2 in Bascom einzubinden, bin ich nach der Anleitung von MCS vorgegangen (finde den Link gerade nicht).
Das wichtigste ist, dass du den LIBUSB Treiber als "filter driver" konfigurierst (und überhaupt installiert hast?!). Somit kannst du beide Programme (BASCOM & AVRStduio) verwenden. Wie genau du das einstellen musst, steht wie gesagt iwo auf der MCS-Help Seite, aber im Endeffekt ist eh alles selbsterklärend, wenn man diese Info hat ;)
Unter Bascom musst du als Programmer "USBProg Programmer / AVRISP mkII" einstellen.
Also meine Vorgehensweise ist folgende:
1. ich verzinne ein Pad
2. ich richte den Chip aus und verbinde ihn anschließend mit dem einen Pad
3. ich kontrolliere nochmals die korrekte Ausrichtung
4. ich löte ein zweites Pad auf der gegenüberliegenden Seite an
5. ich gebe einiges an Flußmittel auf jede Seite des Chips (eigentlich reicht es auf einer Seite, da des durch den Sog unter den Chip gezogen wird und auf jeder Seite wieder rauskommt)
6. ich gebe etwas Lötzinn auf die Lötkolbenspitze und fahre damit zügig (bei etwas höherer Temperatur, ca. 380°, damits schneller geht) über alle Pins einer Seite
7. ich mache eine kurze Pause, um den Chip nicht zu überhitzen
8. das gleiche für die anderen Seiten
Das geht auch mit einer 1.5mm Spitze, hab ich schon gemacht ;)
Beim Entfernen des Lots von den Pads wäre ich vorsichtig, da dabei schnell mal ein kurzes Pad an der Entlötlitze hängen bleibt.

Den Code habe ich schon ziemlich weit angepasst, momentan stimmen schon alle Werte in der Gui.
Da es bei den Timern keinen 128 Prescalewert gibt, kommt für das Auslesen der Summensignalwerte nur ein 16Bit Timer in Frage. Somit reichen die Werte von 65116 bis 65268 (Mitte bei 65192). Dadurch werden die Empf-Werte verdoppelt, also anstatt von -37 bis +37 reichen sie jetzt von -76 bis +76. Ich denke, das kommt der Regelung nur zu Gute, da man dann auch noch etwas präziser Steuern kann.
Deswegen müssen zwar einige Zeilen Code angepasst werden, aber das war ja sowieso von Anfang an klar.

Gruß
Chris

EDIT:
Hier der Link: http://avrhelp.mcselec.com/index.html?avr_isp_programmer.htm
Was mir noch einfällt:
Bei mir hatte der Programmer anfangs auch nicht funktioniert, obwohl er vom PC erkannt wurde. Dann habe ich ihn an der Rückseite des PCs angeschlossen (vorher war er an der Vorderseite, das sind aber meistens nur USB-Hubs) und schon gings.

deHarry
29.03.2012, 21:33
Hi William,
nur mal so zur Auffrischung meiner grauen Zellen: Was ist denn das MLF-Gehäuse?
In meinem Datenblatt gibt es den XMega32 im TQFP-Gehäuse, das ist das gleiche wie beim Mega328p. Dann im (V)QFN-Gehäuse, das ist das gleiche wie beim MPU-6000. Und dann noch das (VF)BGA-Gehäuse, mit den Balls auf der ganzen Unterseite verteilt.

Wenn du das QFN-Gehäuse des MPU meinst (das legt zumindest der angegebene Preis des Chip nahe ;-), dann ist die von dir beschriebene Vorgehensweise zumindest schon mal nicht vollkommen abwegig.

Leider (oder zum Glück ;-)) musste ich bisher solche Chips noch nie auf eine Platine ohne Lötstopplack auflöten, so dass ich (noch) nicht mit Erfahrungswerten dienen kann. Chris dürfte mehr dazu sagen können, der macht das schon sein ganzes Leben lang so :).

Auf einer mit Stopplack und Verzinnung versehenen Platine kann man sich das initiale Verzinnen der Pads sparen. Deine Methode (vorher verzinnen und mit Litze Überschuss entfernen) klingt richtig.
...
Ah, ich sehe gerade, Chris hat sich schon gemeldet, ich spare mir also erst mal das Weitere...

Che Guevara
29.03.2012, 22:09
Ich schreibe jetzt lieber nochmal einen neuen Post, nicht dass das noch überlesen wird ;)
Die Pads vorher zu verzinnen und das überschüssige Lot wieder mit Entlötlitze zu entfernen würde ich nicht machen, da die Gefahr sehr groß ist, dass dir ein paar Pads an der Entlötlitze hängen bleiben.
Was man aber machen sollte, ist: Die Pads vom UV-Lack befreien (z.b. mit Flußmittel, da ist meistens Alkohol drin oder mit Spiritus) und nur ein Pad verzinnen. Den Vorgang, wie ich es mache, habe ich in meinem vorigen Post beschrieben.
Wie gesagt, mit meiner Methode gehts fast wie von selbst, ich hatte keinerlei Brücken o.ä.

Gruß
Chris

Willa
30.03.2012, 08:19
Danke für die Tipps :-D Den AVRISP mkII programmer habe ich jetzt zum laufen bekommen. In der Bascom Hilfe steht tatsächlich die genaue Vorgehensweise für diesen Programmer (LIBUSB usw.). Ich werde heute nachmittag versuchen die MPU zu löten.

Was ist denn das MLF-Gehäuse? meiner Meinung nach ist das eine Art Überbegriff für (V)QFN etc. Also für "Fummelkram". Sander hat übrigens ab nächster Woche den ATXMEGA32A4-MH (MLF bzw VQFN) vorrätig für 4.96 Euro. Und die MPU6050 ist auch vorrätig.

was genau meinst du den mit Mini Bolt? Noch kleiner als der jetzige?
Ich konnte den Bolt nicht so klein bauen wie mechanisch möglich, da meine Steuerplatine zu groß war. Dadurch wäre ein großer Teil im Luftstrom der propeller gewesen. Jetzt könnte man eine platine mit 20x20mm verbauen, d.h. ich könnte bei der Gesamtgröße des Copters 3cm sparen. Das gibt bei der IMAV2012 ganze 3.4% mehr Punkte ;-D. Mir macht es Spaß neue Copter zu konstruieren, aber das Konzept vom Bolt ist für meine Zwecke optimal (schnell, klein, wendig, windunempfindlich, 50g Payload), daher werde ich wohl nichts komplett neues machen.

Willa
30.03.2012, 16:08
Ich habe die MPU nun gelötet. Beim Lötvorgang selber sind mir leider schon Pads der Platine abgeflogen. Vielleicht ist mein Platinenreiniger (Kontakt LR) zu aggressiv? Sofern ich das erkennen kann sind aber nur unwichtige Pads abgeflogen. Aber die ganze Sache sieht nicht gut aus. Ich habe es trotzdem einfach mal versucht und den Code von Chris verwendet, bzw. angepasst (richtig...?)

Dim Twi_start As Byte
Open "twie" For Binary As #2 'twic
Config Twie = 400000 'twic
I2cinit #2

$lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
Config Scl = Porte.1 ' we need to provide the SCL pin name
Config Sda = Porte.0 ' we need to provide the SDA pin name
Const Mpuaddw = &B11010000
Const Mpuaddr = &B11010001


@chris: Du hast A0 von der MPU auf Masse gelegt, richtig?

Wenn ich den Code laufen lasse, bekomme ich für Tmp_gyrox(1) und Tmp_gyrox(2) den Wert 114. Das ist auch bei allen anderen Achsen so. Ich würde gerne feststellen ob die MPU funktioniert, aber es gibt für mich noch zu viele Dinge im Bascom Code die ich nicht verstehe. Kann da jemand helfen?

Che Guevara
30.03.2012, 16:50
Hi,

ich würde die Platinen lieber mit Spiritus reinigen ;)
Zu deinem Code:
Die "i2c_twi.lbx" ist beim XMega unnötig, die I2C Kommunikation ist schon in der "xmega.lib" integriert.
Hier mal mein Testcode nur für den MPU und COM2 (portc.6/7) (ungetestet):


$regfile = "xm32a4def.dat"
$crystal = 32000000
$framesize = 100
$hwstack = 100
$swstack = 100


$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014


Config Osc = Disabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1



Declare Sub Init_mpu()
Declare Sub Read_mpu()




Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Config Serialout1 = Buffered , Size = 200
Open "COM2:" For Binary As #1


Dim Twi_start As Byte
Open "twie" For Binary As #2
Config Twie = 400000



Const Mpuaddw = &B11010000 'AD0 auf Masse
Const Mpuaddr = &B11010001


Dim Test As Byte


Dim Gyrox As Integer
Dim Gyroy As Integer
Dim Gyroz As Integer
Dim Tmp_gyrox(2) As Byte At Gyrox Overlay
Dim Tmp_gyroy(2) As Byte At Gyroy Overlay
Dim Tmp_gyroz(2) As Byte At Gyroz Overlay


Dim Accx As Integer
Dim Accy As Integer
Dim Accz As Integer
Dim Tmp_accx(2) As Byte At Accx Overlay
Dim Tmp_accy(2) As Byte At Accy Overlay
Dim Tmp_accz(2) As Byte At Accz Overlay




I2cinit #2


Call Init_mpu()




Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled
Enable Interrupts



Do


Call Read_mpu()

Print #1 , Gyrox

Waitms 100


Loop

End


Sub Init_mpu()

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 117 , #2 'Register 117 "Who am I"
I2crepstart #2 'repeated start
I2cwbyte Mpuaddr , #2 'read adress of MPU-6050
I2crbyte Test , Nack , #2 'read byte WHO_AM_I (Reg 117)
I2cstop #2 'stop condition

Print #1 , Test

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 25 , #2 'Register 25 Sample Rate Divider (1..8 kHz)
I2cwbyte &B00000000 , #2 'Divider set to 1 (soll)
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 26 , #2 'Register 26 DLPF_CFG (digital lowpass filter) Configuration
I2cwbyte &B00000000 , #2 'Bits 0..2 = 000 - ACC:260Hz, 0.0ms; Gyro:256Hz, 0.98ms ( &B00000000 )
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 27 , #2 'Register 27 Gyro Configuration
I2cwbyte &B00000000 , #2 'Bits 3+4 = 00 - Full Scale Range: +/-250°/s
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 28 , #2 'Register 28 ACC Configuration
I2cwbyte &B00000000 , #2 'Bits 3+4 = 00 - Full Scale Range: +/-2g / No High Pass Filter
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 107 , #2 'Register 107 Power Management 1
I2cwbyte &B00001011 , #2 'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro
I2cstop #2

End Sub


Sub Read_mpu()

I2cstart #2 'X ACC
I2cwbyte Mpuaddw , #2
I2cwbyte 59 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_accx(2) , Ack , #2
I2crbyte Tmp_accx(1) , Nack , #2
I2cstop #2

I2cstart #2 'Y ACC
I2cwbyte Mpuaddw , #2
I2cwbyte 61 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_accy(2) , Ack , #2
I2crbyte Tmp_accy(1) , Nack , #2
I2cstop #2

I2cstart #2 'Z ACC
I2cwbyte Mpuaddw , #2
I2cwbyte 63 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_accz(2) , Ack , #2
I2crbyte Tmp_accz(1) , Nack , #2
I2cstop #2


I2cstart #2 'X GYRO
I2cwbyte Mpuaddw , #2
I2cwbyte 67 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyrox(2) , Ack , #2
I2crbyte Tmp_gyrox(1) , Nack , #2
I2cstop #2

I2cstart #2 'Y GYRO
I2cwbyte Mpuaddw , #2
I2cwbyte 69 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyroy(2) , Ack , #2
I2crbyte Tmp_gyroy(1) , Nack , #2
I2cstop #2

I2cstart #2 'Z GYRO
I2cwbyte Mpuaddw , #2
I2cwbyte 71 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyroz(2) , Ack , #2
I2crbyte Tmp_gyroz(1) , Nack , #2
I2cstop #2

End Sub

Die Test-Ausgabe sollte einen Wert von 104 (glaube ich) haben.

Gruß
Chris

deHarry
30.03.2012, 16:59
Hi William,
die Basisadresse des MPU ist immer 68H oder 69H (Hex).
Wenn A0 auf low liegt also 68H (&H68 in BASCOM).

Um die Schreibadresse (Bit 0 gelöscht) zu erhalten musst du diese 68H 1 Bit nach links shiften und dadurch das Bit 0 mit Null auffüllen.
Da kommt dann D0H (&HD0 = &B11010000) als Wert raus.
Die Leseadresse hat das Bit 0 gesetzt, also eins mehr als die Schreibadresse, macht &HD1 (= &B11010001).

Die Werte, die du oben eingestellt hast, stimmen also.

deHarry
30.03.2012, 17:09
Hi Chris,

104 als Antwort vom MPU ist korrekt.

In der Leseroutine (Read_MPU() solltest du um Zeit zu sparen die Tatsache ausnutzen, dass die ACC- und die Gyro-Register jeweils ohne Lücke hintereinander liegen.

Das machst du, indem du das Startregister für X ACC vorgibst und dann alle 6 Werte hintereinander mit I2rbyte xxx, Ack , #2 einliest.
Erst beim zweiten Byte von Z ACC kommt der Lesebefehl mit Nack und anschließendem I2Stop.
Da wir die Z-Achse nicht verwenden, kannst du weitere 2 Leseops sparen, indem du schon bei Y ACC aufhörst.

Bei den Gyros genauso, aber da der Tempsensor dazwischen liegt, muss leider hier neu aufgesetzt werden.

[edit]
Für den Mega328p sieht das konkret so aus:


'===Read MPU-6050============================================== =================
Sub Read_mpu

'==All registers are read in one burst read operation, so FIFO has to be enabled
' wir müssten auf den FIFO-Interrupt warten und dann burst-lesen, aber der INT ist nicht verdrahtet :-(
' also kein burst mode zum Lesen
'==Read only 2 really used ACC-Axis from MPU-6050==

I2cstart 'start condition
I2cwbyte Mpuaddw 'write adress of MPU-6050
I2cwbyte 59 'Register 59 ACCEL_XOUT_H
I2cstart 'repeated start
I2cwbyte Mpuaddr 'read adress of MPU-6050
I2crbyte Meas_accy(2) , Ack 'read byte ACCEL_XOUT_H (Reg 59)
I2crbyte Meas_accy(1) , Ack 'read byte ACCEL_XOUT_L (Reg 60)

I2crbyte Meas_accx(2) , Ack 'read byte ACCEL_YOUT_H (Reg 61)
I2crbyte Meas_accx(1) , Nack 'read byte ACCEL_YOUT_L (Reg 62)
I2cstop 'stop condition

'==Read all 3 Gyro-Axis from MPU-6050==
I2cstart 'start condition
I2cwbyte Mpuaddw 'write adress of MPU-6050
I2cwbyte 67 'Register 67 GYRO_XOUT_H
I2cstart 'repeated start
I2cwbyte Mpuaddr 'read adress of MPU-6050
I2crbyte Meas_gyrox(2) , Ack 'read byte GYRO_XOUT_H (Reg 67)
I2crbyte Meas_gyrox(1) , Ack 'read byte GYRO_XOUT_L (Reg 68)

I2crbyte Meas_gyroy(2) , Ack 'read byte GYRO_YOUT_H (Reg 69)
I2crbyte Meas_gyroy(1) , Ack 'read byte GYRO_YOUT_L (Reg 70)

I2crbyte Meas_gyroz(2) , Ack 'read byte GYRO_ZOUT_H (Reg 71)
I2crbyte Meas_gyroz(1) , Nack 'read byte GYRO_ZOUT_L (Reg 72)
I2cstop 'stop condition

Get_gyrox = Get_gyrox / 64 ' auf 10 bit schrumpfen
Get_gyroy = Get_gyroy / 64 ' auf 10 bit schrumpfen
Get_gyroz = Get_gyroz / 64 ' auf 10 bit schrumpfen
Get_gyroy = Get_gyroy + 434 ' (512 - 68) die gelesenen Werte in die Nähe von 512 skalieren
Get_gyrox = Get_gyrox + 589 ' (512 + 77) damit Willas Algorithmen stimmen
Get_gyroz = Get_gyroz + 464 ' (512 - 48)

Get_accx = Get_accx / 64 ' auf 10 bit schrumpfen
Get_accy = Get_accy / 64 ' auf 10 bit schrumpfen
Get_accx = Get_accx + 500 ' (512 +- xx) die gelesenen Werte in die Nähe von 512 skalieren
Get_accy = Get_accy + 500 ' (512 +- xx) damit Willas Algorithmen stimmen

End Sub


Die "Skalierung" am Ende der Routine muss eventuell nicht sein, wenn die Algorithmen entsprechend angepasst werden.

bendh
30.03.2012, 18:29
Ich habe jetzt auch meine Platine, es hat solange gedauert, weil ich dem Chris eine Adresse übermittelt habe, wo die Postleitzahl einen Zahlendreher hatte und die Post so lange gebraucht hat bis sie es gemerkt hat.:-)
Ich habe sie auch schon bestückt und wie Willa hatte ich Probleme beim Sensor. Es gab einen Kurzschluß in der Betriebsspannung durch den Metallboden des MPUs.
Jetzt möchte ich gerne etwas ausprobieren. Ihr habt ja wohl Software die funktioniert, wie komme ich da drann?

gibt es vielleicht ein Programm das die Leuchtdioden der Reihe nach aufleuchten lässt?
Ich habe auch die Vorwiderstände der LED 1 und 3 auf 390 Ohm verkleinert, damit sie heller leuchten.

Gruß Bernd

Willa
30.03.2012, 19:17
hi, ich hab mal ein blink programm angehängt.

Ich habe nochmal etwas gelötet... Jetzt bekomme ich "104" als antwort in der variablen "Test". Aber alle anderen Variablen sind nun "0". Immerhin schon mal was anderes. Irgendwie antwortet die MPU, aber nicht ganz korrekt...

Picojetflyer
30.03.2012, 19:27
I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 117 , #2 'Register 117 "Who am I"
I2crepstart #2 'repeated start
I2cwbyte Mpuaddr , #2 'read adress of MPU-6050
I2crbyte Test , Nack , #2 'read byte WHO_AM_I (Reg 117)
I2cstop #2 'stop condition

Print #1 , Test



Wenn die I2C Komunikation nicht stimmt (MPU antwortet nicht) kann es passieren das man trotzdem diese 104 zurückbekommt. Ist mir bei meinen Copter schon früher mal aufgefallen. Man schreibt ja die 104 ins I2C Register, wenn die Komunikation nicht OK ist ändert sich darin auch nix und man bekommt die 104 auch wieder zurück.

Willa
30.03.2012, 19:37
Man schreibt ja die 104 ins I2C Register, wenn die Komunikation nicht OK ist ändert sich darin auch nix und man bekommt die 104 auch wieder zurück.
Hmmm, wenn ich die Kabel von I²C entferne bekomme ich als Antwort in Test "114", mit angeschlossenen Kabeln "104". Also irgendwas passiert da... Es könnte aber sein, dass die Kondensatoren (2.2nF und 10nF) etwas gelitten haben beim mehrfachen ein/auslöten. Ich werde die mal austauschen.

deHarry
30.03.2012, 20:11
Ihr habt den MPU bei der Initialisierung aus dem Sleepmode geholt, ja?
Nach Power On steht die Kiste erst einmal und muss davon überzeugt werden, Werte auszugeben.

Das Powermanagement-Register 107 muss dafür passend gesetzt werden. (Ich meine das aber schon bei eurem Code irgendwo gelesen zu haben)


I2cwbyte 107 'Register 107 Power Management 1
I2cwbyte &B00001011 'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro

Che Guevara
30.03.2012, 20:26
Hast du den mal meinen oben geposteten Code versucht? Der funzt bei mir zu 100% ;) Wenns bei dir nicht geht, liegts wohl an der HW.
Hast du einen MPU6000 oder MPU6050?

Gruß
Chris

deHarry
30.03.2012, 20:44
MPU-6000 oder MPU-6050 muss egal sein, wenn die Anschlüsse, wie im Schaltbild von Bernds Design gezeigt, verlötet sind.

Che Guevara
30.03.2012, 20:46
Ja, genau auf die "Verlötung" wollte ich hinaus. Willa, welche Pins haben bei dir welches Potential und welchen Chip hast du?

Gruß
Chris

deHarry
30.03.2012, 21:12
Er hat einen MPU-6000.

bendh
30.03.2012, 23:57
Gerade habe ich mit AVR Studio 5.1 das hex-File "Erster Test" von Willa aufgespielt.
Hurra !! ES BLINKT !! Tiefe Dankbarkeit
Ist es möglich die Software zu bekommen, damit ich sehen kann, warum das passiert?

Wie geht es jetzt weiter?

Gruß Bernd

bendh
31.03.2012, 09:36
Ich habe das ganze noch ein wenig überarbeitet:-)

bendh
31.03.2012, 14:03
von Chris kam noch die Anregung mit möglichst wenig Anschlüssen auszukommen und den Empfänger mit 3V3 zu versorgen, wenn mit mehr Zellen geflogen wird. Dafür gibt es jetzt eine Brücke.
Was ich schon am Anfang hätte sagen sollen, auch am Sensorboard gibt es eine Brücke um die Adresse einstellen zu können, aber das habe eh schon alle mitbekommen.

deHarry
31.03.2012, 18:32
So, ich habe jetzt meine GUIDE bestückt und den Sensor angeschlossen... ab jetzt kann ich mitreden ;-)
Aber programmiert ist noch nichts, nur gelötet und die Spannungen kontrolliert.

22003 22004 22005
Wenn ihr den Reset-Taster irgendwo zu kaufen gefunden habt, dann gebt mir bitte Bescheid. Ich habe nämlich mit gutem Grund zwei verschieden große Taster in meinen Layouts und Schaltbildern vorgesehen. Der profane Grund ist: den Kleinen gibt es nirgends zu kaufen, den Großen hat Conrad im Prgramm.
Ich habe Muster des Kleinen vom Hersteller (oder Vertrieb?) bekommen, aber auf die Frage, wo ich diese tollen Schalter kaufen kann, kam leider keine Antwort.
... ja, ich weiß, dass keiner diesen Schalter wirklich braucht und er deshalb sowieso nicht bestückt wird :-).

bendh
31.03.2012, 18:39
Schlimmer noch, wenn bei diesen Resonanzen es immer wieder ein Reset gibt :-)

bendh
31.03.2012, 18:41
Ich male gerade wieder am Board. Ich versuche mein Glück mit 2mm Steckabstand. Mir sind die Kleinen zu unsicher.

Gruß Bernd

deHarry
31.03.2012, 18:51
Hi Bernd,
als ich die Fotos hochgestellt habe, ist mir wieder die "Diskussion" über "Kupfer lieber wegmachen" oder "Umwelt schonen" eingefallen, wo du auf "Kupfer weg, um Gewicht zu sparen" gepocht hast...

Wie komme ich ausgerechnet jetzt darauf?

Na ja, mit Blick auf das 2. Foto, wo man die IMU-Platine von der Seite sieht, kommen mir so meine Zweifel, ob die zusätzliche Platine - auch ohne Kupferflächen - mit ihren Kabeln zum Anschluss, im Endeffekt nicht viel zu schwer ist... ;-) :-)

Ich habe übrigens nur die Bauteile bestückt, die ich wirklich benötige. Die Akkuspannung mal außen vor gelassen. Da fehlt mir noch der Stabi.

bendh
31.03.2012, 18:54
Hallo Harald,

ich werde meine Platine noch dünner schleifen :-)

deHarry
31.03.2012, 18:57
Schlimmer noch, wenn bei diesen Resonanzen es immer wieder ein Reset gibt :-)
Sooo schlimm wackeln meine Motoren jetzt nun auch wieder nicht. :)

Ich habe jetzt mal den Versuch unternommen, die Motoren zusammen mit den Propellern auszuwuchten.
Motor für Motor, nicht alle zusammen.
Zuerst den Propeller so lange in kleinen Winkeln gedreht, bis die Vibrationen am Geringsten waren, dann mit Gewebeband auf dem Propeller die Unwucht weiter verringert.
Oder hätte ich mit dem Propeller auf maximale Unwucht gehen müssen?

bendh
31.03.2012, 19:09
ich glaube so brauchst du am wenigsten Ausgleichsmasse.

bendh
31.03.2012, 19:50
So jetzt für alle die mit den kleinen Pads Probleme hatten, eine Version mit 2mm Steckern.

yak03
01.04.2012, 00:20
Hi Harald,

ich habe ähnliche Schalter bei Farnell gesehen.
Typ : MULTICOMP - TM-533I-Q-T/R - TASTSCHALTER, SPNO, SMD
Gruß
Sven(2)

deHarry
01.04.2012, 10:19
Hallo Sven(2),
der Farnell Typ ist 1,5 mal größer als der von mir verwendete. Trotzdem danke für den Hinweis.

Die Maße meines Musters sind 3,5x4,2 mm.

Gefunden habe ich den Taster letztes Jahr hier:
http://wppro.com/content/de/produkte/taster-schalter/taster/product/516.html

bendh
01.04.2012, 10:31
So meiner ist heute zum 1. mal geflogen.

und zwar von A nach p, dann nach r und i, gelandet ist er nach 1er Minute in l.

:-)

Gruß Bernd, der auf Software zum ausprobieren wartet.

deHarry
01.04.2012, 11:53
Mist! Ich hab´s schon immer geahnt, jetzt weiß ich es: Ich bin im falschen Film! :(

Ich bitte um Auflösung der Insider-Rätsel. :-)

"Meiner" kann sich nicht auf einen Quadrocopter mit der neuen Platine beziehen, denn du hast ja noch keine Software dafür, wie du schreibst.
Alle deine anderen Copter (von denen wir wissen) sind nicht zu ersten Mal in der Luft.
Mehrere Postings vorher beziehen sich auf kleine Taster... du willst uns nicht erzählen, dass dein Taster 1 Minute geflogen ist, oder? ;-)

Und die Positionsangaben entziehen sich mir vollkommen...

Happy Jack
01.04.2012, 17:31
So meiner ist heute zum 1. mal geflogen.und zwar von A nach p, dann nach r und i, gelandet ist er nach 1er Minute in l.:-)

Dann war aber in dem HEX-File mehr drin als eine blinkende LED - genial!

Hans

BTW: Bin heute Nacht auch geflogen.

deHarry
01.04.2012, 18:01
Jetzt blinkt mein XMega ebenfalls :-)

Aber die Platine liegt wie angeschweißt auf dem Schreibtisch, da fliegt nix ;-)

bendh
01.04.2012, 18:21
Vielleicht hat es bei mir ja deshalb funktioniert, weil ich es zweimal aufgespielt habe. HEX, HEX :-)

deHarry
01.04.2012, 18:30
Ah, jetzt, ja!! Eben hat´s geschnackelt :-)

Ok, dann ist wenigstens einer heute anständig von A nach l geschickt worden... #-o8-[ :oops:

Willa
02.04.2012, 08:02
Hast du den mal meinen oben geposteten Code versucht? Der funzt bei mir zu 100% :wink: Wenns bei dir nicht geht, liegts wohl an der HW.
Das hilft schon mal sehr viel weiter, da weiss ich jetzt wo ich gucken muss. Dann sind wohl doch ein paar Pins noch nicht richtig benetzt.


Ja, genau auf die "Verlötung" wollte ich hinaus. Willa, welche Pins haben bei dir welches Potential und welchen Chip hast du?
Ich muss zur Arbeit, hab mal schnell die zwei Kondensatoren nachgemessen: Über C14 liegen 3.3V an, über C13 0.3V. Ich gucke nachher nochmal genauer.

Che Guevara
02.04.2012, 08:22
Hi,

ich meinte eigentlich, woran du CS und AD0 angelegt hast? CS ist bei mir 3V3 und AD0 liegt auf Masse. Solltest du AD0 auf 3V3 gelegt haben, ändert sich deine Adresse auf


Const Mpuaddw = &B11010010
Const Mpuaddr = &B11010011

Es kann auch gut sein, dass sich unter dem Chip Brücken gebildet haben, war bei mir Anfangs so... Da hilft dann nur noch Auslöten mittels Heißluftfön o.ä.
Mit welcher Methode hast du den denn MPU verlötet? So, wie du es Anfangs gepostet hattest?

Gruß
Chris

deHarry
02.04.2012, 18:30
Hi Chris,

ich habe - gewitzt durch die Probleme von euch Vorturnern, vielen Dank dafür! - einen quadratischen Klecks Papier unter den MPU geklebt, bevor ich den Chip aufgelötet habe. Das war das nächst Beste, das ich zur Hand hatte. Kapton-Band wäre besser gewesen, aber wer hat das schon zu Hause rum liegen?

Das Papier ist natürlich recht dick (im Vergleich zu Kapton), weshalb ich so meine Probleme hatte, die Pads und die Pins des Chip gleichzeitig mit Lot zu benetzen, aber letztlich hat es geklappt, der MPU tut wie er soll und gibt schön seine Werte aus (dein Testproggie von zwei Seiten weiter vorne).

Eins der unbenutzten Pads ist mir ebenfalls weg geflogen, die anderen freien Pads habe ich gar nicht erst versucht anzulöten, sondern mich auf die funktionalen Pads beschränkt.

Vorverzinnen habe ich mir gespart, lediglich das eine Pad an der Ecke, wo ich losgelegt habe, hat vorher Zinn gesehen.

Die Pads für die Stecker waren eine kleine Herausforderung, da meine Ständerbohrmaschine keine 0,6 mm Bohrer fasst. Da musste ich zum Akkuschrauber greifen, aber da die Löcher in den Pads den Bohrer super gut eingefangen haben, passen die Stecker trotzdem wunderbar. Und der Bohrer lebt auch noch :-)

Ich habe gestern auch noch ein bisschen dein Testprog aufgemotzt um ein Gefühl für die Timer in dem XMega zu bekommen, ich hoffe, über deinen Guide-Code bekomme ich da einen tieferen Einblick. Man muss intensiv in der Config-Datei lesen, um alle Parameter korrekt angeben zu können, da ist die Hilfe von Bascom nicht eben ausführlich (das gilt aber für die AtMegas gleichfalls).

Willa
02.04.2012, 18:39
@Chris: A0 ist auf GND und CS ist ja fest auf +3.3V gelegt. Ich habe die MPU grad in meinem Wok entlötet. Das ging sehr gut. Viele Pads unter der MPU sind lose. Das kann so wahrscheinlich nicht gehen. Und das große Pad unter der MPU hatte vielleicht auch zeitweise irgendwie Kontakt zu +3.3V und GND. Mir ist grad eh nicht ganz klar wie man das ohne Lötstopplack verhindern sollte. Chris, hast du noch ein oder zwei IMU Platinen? Die erste habe ich leider kaputt gemacht...

Mit welcher Methode hast du den denn MPU verlötet? So, wie du es Anfangs gepostet hattest?
Ja, so wie du es vorgeschlagen hattest. Jetzt habe ich mir aber noch einen feineren Lötkolben gekauft, mit dem kommt man besser an die Pads ran. Damit sollte der nächste Versuch klappen...

deHarry
02.04.2012, 18:47
Hi Willa,
lege einfach ein ca. 4x4 mm großes Stück normales Kopiererpapier unter den MPU (ich habe meines mit einem winzigen Tröpfchen Plastikkleber auf dem Metallpad auf der UNterseite des MPU fixiert). Das klappt prima und verhindert zuverlässig Kurzschlüsse.

Die Pads, die dir abgerissen sind, brauchst du wahrscheinlich nicht. Nur wenn eine Leiterbahn vom Pad weg führt muss das zugehörige Pad angelötet werden.

Willa
02.04.2012, 19:39
lege einfach ein ca. 4x4 mm großes Stück normales Kopiererpapier unter den MPU
Super Idee. Und ich habe sogar eine Quelle für Kapton Band :-D

Die Pads, die dir abgerissen sind, brauchst du wahrscheinlich nicht. Nur wenn eine Leiterbahn vom Pad weg führt muss das zugehörige Pad angelötet werden.
Leider ist einer der abgerissenen Pads A0. Bzw. das Pad und die Leiterbahn sind noch da, hängen aber in der Luft...

Ich habe aber auch eine gute Neuigkeit: Der Spektrum Satellit funktioniert hervorragend mit dem Xmega und 32MHz internem Takt. Eisspray auf dem Satelliten und/oder auf dem xmega machen da nichts aus, die Kommunikation klappt ohne Fehler bei 115200 baud. Und es ist herrlich komfortabel zu debuggen mit 2 HW Uarts ;-D

Mit diesem Code erzeuge ich den 8ms Timer der zum Synchronisieren mit dem Empfänger genutzt wird. Ist das eine genehmigte Variante?

Config Tcc0 = Normal , Prescale = 1024 '32,000,000 / 1024 = 31250 Hz
Tcc0_per = 250 '0.008 s * 31250 Hz = 250

bendh
02.04.2012, 19:53
Kapton-Band ist oft bei Lipo-Akkus verarbeitet.
Was die Pads betrifft, ich habe ja ein neues Angebot gemacht, mit 2mm Pads.
Ich habe mir diese Platine geätzt ( danke Chris für die Tipps ) und ich muss sagen, das ist gleich viel besser zu handhaben.
Ich hatte auch erst einen Kurzschluß unter dem MPU, dann habe ich etwas Folie untergeklebt und dann ging es.
Die Blink Software geht schon. Es wäre nett wenn ich da noch die Orginalsoftware haben könnte, um mal Bascom zu üben.
Hat jemand Lust mir ein File schicken, mit dem ich den Sensor testen kann?
Kann ich zum Test dann die Willa GUI nehmen, seriell angeschlossen?

Gruß Bernd

ich habe noch vergessen, ich benutze einen Jeti Empfänger mit Summensignal.

deHarry
02.04.2012, 20:24
Hi Bernd,

Chris hat ein paar Seiten weiter vorne eine Demosoft eingestellt, mit der du deinen MPU auslesen und auf einem Terminal-Programm ausgeben kannst.

Ich habe diesen Code noch ein bisschen verfeinert und ein paar Codeschnipsel für die LEDs eingestreut um mich an die Timer in dem XMega heran zu tasten.
Das Geblinke klappt eher mühsam, aber immerhin ;-)


$regfile = "xm32a4def.dat"
$crystal = 32000000
$framesize = 100
$hwstack = 100
$swstack = 100

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Disabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

Declare Sub Init_mpu()
Declare Sub Read_mpu()

Config Tce0 = Timer , Prescale = 1 ' 16bit Timer -> max 65535
Tcd0_per = 6550
Enable Tce0_ovf , Hi
On Tce0_ovf Zaehler 'timer overflow


Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
'Config Serialout1 = Buffered , Size = 200
Open "COM2:" For Binary As #1

Dim Twi_start As Byte
Open "twie" For Binary As #2
Config Twie = 400000

Const Mpuaddw = &B11010000 'AD0 auf Masse
Const Mpuaddr = &B11010001


' Motors (PWM)
Config Portd.0 = Output 'Mot RH
Config Portd.1 = Output 'Mot RV
Config Portd.2 = Output 'Mot LH
Config Portd.3 = Output 'Mot LV
Config Portd.4 = Output 'Mot RM
Config Portd.5 = Output 'Mot LM

' LEDs / Beeper
Config Portc.4 = Output 'led 1 (Willa-LED) ROT
Config Portc.5 = Output 'led 2 (Willa-LED) BLAU
Config Portd.6 = Output 'led 3 (Willa-LED) GELB

'--Alias's
Led_rot Alias Portc.4
Led_blau Alias Portc.5
Led_gelb Alias Portd.6


Dim Test As Byte
Dim A As Word , B As Word , C As Word , D As Word



Dim Gyrox As Integer
Dim Gyroy As Integer
Dim Gyroz As Integer
Dim Tmp_gyrox(2) As Byte At Gyrox Overlay
Dim Tmp_gyroy(2) As Byte At Gyroy Overlay
Dim Tmp_gyroz(2) As Byte At Gyroz Overlay

Dim Accx As Integer
Dim Accy As Integer
Dim Accz As Integer
Dim Tmp_accx(2) As Byte At Accx Overlay
Dim Tmp_accy(2) As Byte At Accy Overlay
Dim Tmp_accz(2) As Byte At Accz Overlay

I2cinit #2
Call Init_mpu()

Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
Enable Interrupts

A = 0

Do

Call Read_mpu()

Print #1 , Gyrox

' Waitms 100

B = A Mod 20
If B = 0 Then Toggle Led_rot

C = A Mod 201
If C = 0 Then Toggle Led_blau

D = A Mod 302
If D = 0 Then Toggle Led_gelb

Loop

End

'===IRQ-Routine=================================
Zaehler:

Incr A
' Toggle Led_gelb

Return
'===IRQ-Routine=================================


Sub Init_mpu()

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 117 , #2 'Register 117 "Who am I"
I2crepstart #2 'repeated start
I2cwbyte Mpuaddr , #2 'read adress of MPU-6050
I2crbyte Test , Nack , #2 'read byte WHO_AM_I (Reg 117)
I2cstop #2 'stop condition

Print #1 , Test

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 25 , #2 'Register 25 Sample Rate Divider (1..8 kHz)
I2cwbyte &B00000000 , #2 'Divider set to 1 (soll)
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 26 , #2 'Register 26 DLPF_CFG (digital lowpass filter) Configuration
I2cwbyte &B00000000 , #2 'Bits 0..2 = 000 - ACC:260Hz, 0.0ms; Gyro:256Hz, 0.98ms ( &B00000000 )
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 27 , #2 'Register 27 Gyro Configuration
I2cwbyte &B00000000 , #2 'Bits 3+4 = 00 - Full Scale Range: +/-250°/s
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 28 , #2 'Register 28 ACC Configuration
I2cwbyte &B00000000 , #2 'Bits 3+4 = 00 - Full Scale Range: +/-2g / No High Pass Filter
I2cstop #2 'stop condition

I2cstart #2 'start condition
I2cwbyte Mpuaddw , #2 'write adress of MPU-6050
I2cwbyte 107 , #2 'Register 107 Power Management 1
I2cwbyte &B00001011 , #2 'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro
I2cstop #2

End Sub


Sub Read_mpu()

I2cstart #2 'X ACC
I2cwbyte Mpuaddw , #2
I2cwbyte 59 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_accx(2) , Ack , #2
I2crbyte Tmp_accx(1) , Ack , #2
' I2cstop #2

' I2cstart #2 'Y ACC
' I2cwbyte Mpuaddw , #2
' I2cwbyte 61 , #2
' I2crepstart #2
' I2cwbyte Mpuaddr , #2
I2crbyte Tmp_accy(2) , Ack , #2
I2crbyte Tmp_accy(1) , Nack , #2
I2cstop #2

' I2cstart #2 'Z ACC
' I2cwbyte Mpuaddw , #2
' I2cwbyte 63 , #2
' I2crepstart #2
' I2cwbyte Mpuaddr , #2
' I2crbyte Tmp_accz(2) , Ack , #2
' I2crbyte Tmp_accz(1) , Nack , #2
' I2cstop #2


I2cstart #2 'X GYRO
I2cwbyte Mpuaddw , #2
I2cwbyte 67 , #2
I2crepstart #2
I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyrox(2) , Ack , #2
I2crbyte Tmp_gyrox(1) , Ack , #2
' I2cstop #2

' I2cstart #2 'Y GYRO
' I2cwbyte Mpuaddw , #2
' I2cwbyte 69 , #2
' I2crepstart #2
' I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyroy(2) , Ack , #2
I2crbyte Tmp_gyroy(1) , Ack , #2
' I2cstop #2

' I2cstart #2 'Z GYRO
' I2cwbyte Mpuaddw , #2
' I2cwbyte 71 , #2
' I2crepstart #2
' I2cwbyte Mpuaddr , #2
I2crbyte Tmp_gyroz(2) , Ack , #2
I2crbyte Tmp_gyroz(1) , Nack , #2
I2cstop #2

End Sub

Der COde ist im Wesentlichen der von Chris, ich habe nur überflüssige I²C-Schreib- und -Leseops aus der Read_MPU-Routine raus geschmissen (Laufzeit!) und eine Timer-IRQ-Routine eingebaut, die die LEDs mehr oder weniger zyklisch blinken lässt. Die Takte der LEDs sind sowas von daneben, dass ich denke, ich habe da was Grundsätzliches verpeilt. Vielleicht kann mir ja der eine oder andere Leser den entscheidenden Tipp geben :)

Die 100 ms Pause in der Main Loop kann wieder rein, dann ist die Ausgabe im Terminal lesbarer.

nota bene:
Um die Kommunikation auf der Seriellen Schnitte mitzuschneiden (z.B. beim Programmieren über Willas GUI oder deren Kommunikation mit der GUIDE) verwende ich zusätzlich den "Free Serial Port Monitor".

bendh
02.04.2012, 21:51
Hat von euch jemand Lust, so etwas wie eine Anleitung zu verfassen, für den mechanischen und elektronischen Teil würde ich mich bereit erklären.
Und zwar wirklich: Man nehme das und jenes, mache dann das und dann sollte es auch funktionieren.
Ich finde es immer schade, wenn zweimal die gleichen Fehler gemacht werden.

Gruß Bernd

Happy Jack
03.04.2012, 08:26
Tcd0_per = 6550

Muss das nicht TCE0 heissen?

Gruß Hans

Che Guevara
03.04.2012, 12:32
Hallo,

Versteh mich nicht falsch, aber du kennst den Unterschied zwischen TCE_Per, TCE_CCX , TCE_CNT?
In deinem Programm configurierst du Timer TCE0, schreibst dann aber TCD0_Per . Das ist aber denke ich ein Schreibfehler, da der Rest wieder stimmt.
Der _Per Wert gibt die höchste Zählrate an, d.h. er zählt in deinem Bsp. von 0 bis 6550. Um das selbe Zählprinzip wie bei den Megas zu haben, muss man das Register TCE0_CNT verwenden ;)
Bei TCE0_CNT = 6550 zählt er dann von 6550 bis 65535.

Gruß
Chris

Che Guevara
03.04.2012, 13:52
Hallo,

ich bin heute das erste mal erfolgreich geflogen ;)
Der Code funktioniert soweit, jedoch müssen noch ein paar Kleinigkeiten verändert werden, z.b. die Skalierung der PID-Parameter von der GUI, evtl. manche Parameter wieder als Integer deklarieren, usw...
Außerdem habe ich den Code mit meinem Quadrocopter geflogen, deswegen sind die Motoren 5 & 6 teilweise auskommentiert bzw. aus dem Code entfernt. Das werde ich die Tage, sofern es die Zeit zulässt, noch machen.

Gruß
Chris

Willa
03.04.2012, 18:32
Hi,

ich bin heute das erste mal erfolgreich geflogen Glückwunsch! Und geht das gut?
so, jetzt habe ich die MPU nochmal eingelötet und erneut getestet. Geht nicht, aber die Variable Test ist 104. Rest null. Dann wieder entlötet und komplett mit kabeln versehen um zu gucken ob der Fehler auf der Platine liegt. Leider nicht. Die IMU antwortet immer noch genauso. Da der Code bei euch ja funktioniert, muss wohl meine IMU gleich beim ersten Lötversuche gelitten haben. Schiet...
@Chris: Hast du noch eine IMU Platine?
Ich bestelle mir jetzt zwei MPUs und zwei xmega im MLF Gehäuse bei Sander. Das muss doch mal zum laufen zu bekommen sein....

Picojetflyer
03.04.2012, 19:02
also ich finde das Angebot super und mein Copter fliegt damit schon seit Wochen. http://www.drotek.fr/shop/en/42-mpu6050-gyro-accelerometer.html

bendh
03.04.2012, 21:42
Hallo Chris,

ich habe gerade deinen Code ausprobieren wollen.
Der Chip wird in Bascom erkannt, aber beim schreiben sagt er :
error:206 Line:31 Libery not found
ich vermute er sucht xmega.lib
wo finde ich die?
die ErsterTest.hex von Willa funktioniert.

noch Fragen zu deinem Programm:
du hast den Empfänger an Port C2 = Pin12
LED1 an PORTB.0 = Pin4
LED2 an PORTB.1 = Pin5
LED3 an PORTB.2 = Pin6
ist das korrekt?

wo hast du die Motoren angeschlossen? I²C ?

Du merkst meine Ahnung von Bascom =0

Gruß Bernd

bendh
03.04.2012, 21:52
@Willa

wenn du eine neue Platine für den Sensor willst, soll Chris das neue Layout verwenden, das lässt sich deutlich besser bearbeiten, hat aber 2mm Pinabstand.
Wenn er nicht dazu kommt, kann ich auch eine Platine machen, allerdings erst an Ostern.
Ich habe bei meinen Platinen die Löcher mit 0,5 mm gebohrt und die Steckerpins dann mit dem Schraubstock (einem kleinen ) eingepresst, das wird stabiler.

Che Guevara
03.04.2012, 22:30
Hallo,

@Willa,
ja, eine Platine habe ich noch, ich schicke sie dir morgen ;)
Der Flug sah wirklich sehr stabil und geschmeidig aus, obwohl ich die Parameter nur einmal nach Gefühl verändert habe, ich denke das liegt an der doch etwas höheren Regelfrequenz :D
Dass du den Chip kaputtgelötet hast, kann ich fast nicht glauben! Mein erster MPU wollte auch erst nach ca. 1Woche mit mir reden, bis dahin hatte ich ihn schon 4mal aus- und eingelötet. Bei mir war es so, dass ein Pad der Platine abgegangen ist und dieses blieb dann zwischen zwei Pins an der Unterseite des MPU hängen. Hast du das mal kontrolliert, ob hier irgendwo eine Verbindung ist?
@Bernd,
Welche Version von Bascom hast du den? Ich nehme an, du hast die Demoversion?! Mit der Demo-Version ist es nicht möglich, XMegas zu flashen. Entweder du kaufst dir die Vollversion (was ich aber für Unfug halte, sofern du nicht öfter damit programmierst), oder jemand gibt dir ein Hex-File zum flashen.
Mein Empfänger ist an PinC.2 und meine Leds sind an PinB.0 bis PinB.2 ;)
Die Motoren laufen bei mir ohne I2C-Konverter direkt mit der vom XMega erzeugten PWM ;) Eingelernt habe ich die Motoren / Regler auf 20000 als Minimum und 60000 als Maximum, d.h. ich habe eine ziemlich große Stellauflösung von 40000 :D

Gruß
Chris

bendh
04.04.2012, 08:01
Hallo Chris,
so ein HEX-File wäre dann natürlich eine schöne Sache, um über Ostern nicht nur rum zu sitzen. :-)

Gruß Bernd

Che Guevara
04.04.2012, 10:23
Hi,

im Anhang mal das .Hex File zu meinem vorigen geposteten Code ;) Motoren sind an PortD.0 bis PortD.3, IMU an TWIE, LEDs an PortB.0 bis PortB.2, Receiver an PortC.2 .
Die GUI-Parameter sind bei mir momentan seeeehr klein eingestellt, so im Bereich von 0 bis 30, weil die Skalierung im Programm noch nicht richtig ist. Das werde ich aber demnächst, sofern ich etwas Zeit habe, noch machen ;)

Gruß
Chris

bendh
04.04.2012, 18:28
Danke Chris,

leider passt das nicht zu meinem Layout. Ich habe mich für das 4MOT_1_1 entschieden, wegen den größeren Pads und da liegen die LEDs, die Motoren und der Empfänger anders.
Ich würde es gerne selbst mit Bascom versuchen, gibt es da keine Lösung nur für den XMega32A4?

Gruß Bernd

bendh
04.04.2012, 18:31
@Hans

wolltest du es nicht mit C versuchen oder noch besser mit der Wii-Software???

Willa
04.04.2012, 18:51
So, jetzt raff ich es grad nicht... Wenn ich die MPU an den anderen I²C Bus hänge (twiC) und das entsprechend im Code ändere, dann funktioniert die IMU und sendet fleissig Werte... Ich hatte schon nach Fehlern auf der Hauptplatine gesucht aber nichts gefunden. Das ist doch etwas eigenartig. Chris sendet mir eine neue MPU Platine (die alte hat ziemlich gelitten bei den vielen Lötversuchen), dann kann ich wieder weitermachen :-D

deHarry
04.04.2012, 19:55
Versteh mich nicht falsch, aber du kennst den Unterschied zwischen TCE_Per, TCE_CCX , TCE_CNT?
Hi Chris!
Da ihr über den Code schreibt, den ich eingestellt habe (auch wenn er in großen Teilen von dir ist (wo aber keine Fehler drin sind :-))), nehme ich mal an, dass die Frage an mich geht.
Die kann ich bedenkenlos mit Nein beantworten.


Um das selbe Zählprinzip wie bei den Megas zu haben, muss man das Register TCE0_CNT verwenden ;)
Bei TCE0_CNT = 6550 zählt er dann von 6550 bis 65535.
Das genau war die Info, die ich gesucht habe, vielen Dank!

deHarry
04.04.2012, 20:09
also ich finde das Angebot super und mein Copter fliegt damit schon seit Wochen. http://www.drotek.fr/shop/en/42-mpu6050-gyro-accelerometer.html
Mhmm, so ungern ich das zugebe, aber der Preis ist wirklich in Ordnung.

Aber natürlich bekommt man den MPU auch auf den von Chris selbst geätzten Platinen ans Laufen, das haben inzwischen mindestens drei Personen bewiesen.
Und dass die MPU-Dinger mithin fast unkaputtbar sind, wissen wir dank verschiedener Brat- und Brutzelverusche von Chris und Willa inzwischen auch ;-)

Der zusätzliche Vorteil den ich beim selber Auflöten sehe: Man bekommt schon mal ein Gefühl dafür, was beim Auflöten der QFN-Version des XMega auf einen zukommt :-). Da müssen dann nicht acht oder zehn, sondern mehr als viermal so viele Pins angeschlossen werden...

deHarry
04.04.2012, 20:16
Hallo Chris,

ich habe gerade deinen Code ausprobieren wollen.
Der Chip wird in Bascom erkannt, aber beim schreiben sagt er :
error:206 Line:31 Libery not found
ich vermute er sucht xmega.lib
wo finde ich die?
Hallo Bernd,

wenn du nicht die Vollversion von BASCOM hast, kannst du den Code nicht kompilieren, der resultierende HEX-file ist viel zu groß für die Demoversion.
Solltest du die Vollversion haben (wie sonst kämest du bis zum Versuch, den Code auf den CHip zu laden?), dann sollte die Library dabei gewesen sein.
Ggf. musst du auf die aktuellste Version (2.0.7.3) aktualisieren. Da ist sie auf jeden Fall dabei.



die ErsterTest.hex von Willa funktioniert.
Hierbei geht es auch nur noch um den abschließenden Programmiervorgang, übersetzt (compiliert) ist der Code schon.

bendh
04.04.2012, 20:27
Hallo Harald,
soweit ich weis, habe ich nicht die Vollversion, ich habe jedenfalls auf Demo geklickt und nichts bezahlt.
Den Code konnte ich auch nicht kompilieren, weil es mit einer Errormeldung abgebrochen hat.
Ich habe nur den Chip ausgelesen und er wurde erkannt.
Das Hex-File von Willa habe ich mit AVR-Studio 5 aufgespielt.
Beim ....bas vom Chris bin ich dann gescheidert.
Beim HEX-File von Chris stimmt die Pin Anordnung nicht mit meinem Layout überein.
Das einfachste für mich wäre es würde mir jemand an die Layout-Version 4MOT_1_1 anpassen.

Gruß Bernd

deHarry
04.04.2012, 20:35
Eingelernt habe ich die Motoren / Regler auf 20000 als Minimum und 60000 als Maximum, d.h. ich habe eine ziemlich große Stellauflösung von 40000 :D
Hi Chris,

wie hast du deine ESCs eingelernt? Eine Art PassThrough programmiert, so dass die Gas-Werte der Funke direkt auf den jeweiligen ESC durchgegeben werden?
Bei meinen ESCs muss ich so einen dusseligen Knüppel-ChaChaCha durchziehen, um die Programmierung zu ändern :-(
Das ist nicht so ohne weiteres durch Willas Code hindurch an die ESCs zu bringen.

Che Guevara
04.04.2012, 21:33
Hi,

@Willa,
ja, das ist ja sehr verdächtig! Hast du mal die Belegung überprüft, nicht dass du aus Versehen SCL und SDA vertauscht hast?
@Harald,
darauf musste ich auch erstmal kommen ;) ich habe mich Anfangs, als der XMega noch Neuland für mich war, mit jedem Teil einzeln beschäftigt, also z.b. die Register TCC0_CNT, TCC0_PER, TCC0_CCX über UART ausgegeben und gekuckt, was da jetzt genau los ist ;) So 100%ig kompatibel sind nämlich die XMegas nicht mit den Megas, zumindest wenn man sich die Register ansieht.
Meine ESC habe ich erstmal von den I2C-Konvertern befreit und anschließend ganz normal (lt. Beschreibung) geflasht. Glücklicherweise habe ich in meinem Quadro 4 Graupner Regler, die ziemlich einfach zum Einlernen sind. Die ESCs in meinem Bolt (Turnigy Plush) sind da schon um einiges schwieriger und unkomfortabler.

Gruß
Chris

Willa
04.04.2012, 21:39
Bei meinen ESCs muss ich so einen dusseligen Knüppel-ChaChaCha durchziehen, um die Programmierung zu ändern :-(
Das ist nicht so ohne weiteres durch Willas Code hindurch an die ESCs zu bringen.
Ich glaube am komfortabelsten ist es ein extra kleines Programm zu schreiben was einfach an alle Pins das gleiche Signal ausgibt (entweder gesteuert mit der Fernsteuerung oder per Terminal). Das habe ich jedenfalls vor. Ich hoffe, die ESCs haben genau den gleichen Takt, sonst laufen die schnell nicht mehr synchron, und programmieren wird schwierig...

Che Guevara
04.04.2012, 21:58
Ja, so mit dem Terminal habe ich es auch gemacht ;) Wenn Interesse besteht, kann ich den Code reinstellen, ist aber nicht wirklich viel dabei, nur ein paar Zeilen :)

Gruß
Chris

Happy Jack
04.04.2012, 22:45
@Hans

wolltest du es nicht mit C versuchen oder noch besser mit der Wii-Software???

Mach ich auch, ich fange aber nicht vor Ostern an. Mal sehen, was draus wird.
Meine PCB von Chris sind noch nicht eingetroffen. Die 4-Mot-Variante hätte mir auch gefallen, nur hast Du die Motoren unglücklich auf zwei Ports verteilt. Das bedeutet dann auch, dass man zwei Timer benötigt. Alle X0-Timer haben vier Capture/Compare-Register, alle X1-Timer eben nur zwei.

Vorab wollte ich noch den MPU6000 an SPI hängen und die Geschwindigkeit mit der I2C-Anschaltung vergleichen. Aber es ist eigentlich vorher schon klar, was da heraus kommt.

So schnell wie Chris bin ich natürlich nicht.

Gruß Hans

Willa
04.04.2012, 23:15
Wenn Interesse besteht, kann ich den Code reinstellen
Oh ja, das erspart uns mal wieder Arbeit :-D

Ich habe jetzt die erste Version des zweiseitigen MLF Layouts "fertig". Zweiseitig ist echt Neuland für mich, und entweder Eagle kann dabei echt nervig sein, oder ich checke es nicht richtig. 20x20 mm sind es im Moment. Vielleicht mag ja jemand mitpuzzlen? Die Bohrung der Pads ist 0.5mm, Bilex hat minimal 0.6mm. Wie kann ich das umstellen?
Edit: grad etwas überarbeitet...:

bendh
05.04.2012, 07:52
Hallo Willa,

wenn du die Bohrungen nur zum selber Ätzen verkleinern willst, dann kannst du in der Boardansicht ein ULP ( Knopf dazu oben neben den Lupen) laufen lassen: drill-aid.ulp
Hier kannst du die Bohrlöcher verkleinern lassen, sie werden dann auf Layer 116 dargestellt.
Zum löschen einfach Layer 116 alleine darstellen und dann mit DELETE GROUP wieder entfernen.
Morgen werde ich mir dein Layout einmal genauer ansehen.
Ich verzweifel nur langsam an ungenügenden Vorgaben, siehe Hans.

Gruß Bernd

bendh
05.04.2012, 08:00
Hallo Hans,

mach doch mal Vorgaben wo der Empfänger, die LEDs, der Sensor und die Motoren am besten angeschlossen sein sollen, dann male ich eben nochmals, das sollte kein Problem sein.

Gruß Bernd

Che Guevara
05.04.2012, 09:24
Hi,

@Bernd:
warum willst du den nochmal ein Layout machen? Ich denke, zum ausprobieren reicht das jetzige doch locker, einzig die kleinen Anschlusspads sind etwas fummelig. Die externen Anschlüsse sind doch eigentlich schon alle festgelegt und passen!? Also ich habe mich, bis auf die 3 LEDs, an deine Vorgaben gehalten und bin schon ein paar mal erfolgreich geflogen :D
@Willa:
Meinen Code kannst du gerne haben, ist nicht viel dabei:


$regfile = "xm32a4def.dat"
$crystal = 32000000
$framesize = 100
$hwstack = 100
$swstack = 100


$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014


Config Osc = Disabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1


Declare Sub Serial1charmatch()


Config Com2 = 38400 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Config Serialin1 = Buffered , Size = 100 , Bytematch = 13
Config Serialout1 = Buffered , Size = 100
Open "COM2:" For Binary As #1



'--Motor Constants--
Const Pwm_mot_off = 20000
Const Pwm_mot_max = 60000


'--PWM Settings--
Config Tcd0 = Pwm , Prescale = 1 , Comparea = Enabled , Compareb = Enabled , Comparec = Enabled , Compared = Enabled , Event_source = Off , Event_action = Off , Event_delay = Disabled , Resolution = 16
Config Tcd1 = Pwm , Prescale = 1 , Comparea = Enabled , Compareb = Enabled , Event_source = Off , Event_action = Off , Event_delay = Disabled , Resolution = 16


Tcd0_cca = Pwm_mot_off '##############################
Tcd0_ccb = Pwm_mot_off
Tcd0_ccc = Pwm_mot_off
Tcd0_ccd = Pwm_mot_off
Tcd1_cca = Pwm_mot_off
Tcd1_ccb = Pwm_mot_off



Dim A As String * 100
Dim B As Word



Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
Enable Interrupts


Print #1 , "START"



Do





Loop

End


Sub Serial1charmatch()
Input #1 , A , Noecho
B = Val(a)
Print #1 , B
If B > 0 And B < 65000 Then
Tcd0_cca = B
Tcd0_ccb = B
Tcd0_ccc = B
Tcd0_ccd = B
Tcd1_cca = B
Tcd1_ccb = B
End If
End Sub

Je nachdem, wieviele Motoren du angeschlossen hast, kannst du ja evtl. wieder einen Timer ausschalten.
Die Werte habe ich von HTerm aus gesendet, ohne LF, nur mit CR am Ende.

Gruß
Chris

Happy Jack
05.04.2012, 09:59
Es ging um das 4-Motoren-Board! Für vier Motoren braucht man keine zwei Timer. Die Version mit 6 Motoren ist schon eine gute Basis. Die LEDs an PortB, die Pads größer machen und vom PortC alle Pads zugänglich machen.

Aber nochmal, wegen mir braucht gar nichts geändert zu werden.

@Bernd,

eine Mail von Dir steht noch aus. Es ging um das gleiche Thema. Du kannst auch gern NEIN reinschreiben.

Hans

Che Guevara
05.04.2012, 10:03
Hm ja klar, für vier Motoren reicht TCC0. Da das Prog aber sowieso sonst nichts macht, ist es ja eigentlich egal, wieviele Timer man benutzt ;)
Hast du den meine Platinen schon bekommen, Hans?

Gruß
Chris

Happy Jack
05.04.2012, 10:12
Da das Prog aber sowieso sonst nichts macht

Meins schon :)

Der Briefträger hat heute morgen geliefert. Vielen Dank!

Hans

bendh
05.04.2012, 18:55
Hallo Willa,
ich habe mir dein Layout einmal angesehen.
Willst du auf den Quarz verzichten?
Dein Empfängeranschluß hat Minus auf dem mittleren Pin, ich kenne dort nur Plus ( erspart Ärger beim Verpolen )
und der Anschluß liegt nicht auf PA5, so hat es Harald vorgegeben.
Bei einer Zelle halte ich es für besser die Empfängerspannung direkt vom Akkueingang zu holen, um den Spannungsverlust des 3V3 Reglers zu vermeiden.
Wie flexibel sind eigentlich die LEDs anschliesbar, oder wo dürfen sie überhaupt nicht hin?
Bei den Motoranschlüssen habe ich jetzt gelernt wäre es besser bei PD0 mit Motor1 zu beginnen (bis PD5 für Motor6), damit die 4Motorer nur einen Timer brauchen.

Gruß Bernd

Gruß Bernd

Willa
05.04.2012, 19:23
Hi Bernd,
danke dass du dir die Zeit genommen hast.

Willst du auf den Quarz verzichten?
Ja, denn richtig zeitkritisch (für meine Anwendungen) ist das ganze nur bei einer UART Übertragung mit 115200 Baud (z.B. Satellitenempfänger). Ich habe das bereits mit dem AtXmega testen können, und die Übertragung funktioniert auch wenn ich die beiden Controller extrem herunterkühle. Also brauchts dafür keinen Quarz.

Dein Empfängeranschluß hat Minus auf dem mittleren Pin, ich kenne dort nur Plus ( erspart Ärger beim Verpolen )
Das habe ich von deinem Schaltplan so übernommen (so wie sonst auch 99.9%). Das wird eh nicht gesteckt, sondern gelötet. So ein Stecker rüttelt sich im Flug schnell mal ab.

und der Anschluß liegt nicht auf PA5, so hat es Harald vorgegeben.
Ich nutze für den Satellitenempfänger den Pin RXD0 / PC2

Bei einer Zelle halte ich es für besser die Empfängerspannung direkt vom Akkueingang zu holen, um den Spannungsverlust des 3V3 Reglers zu vermeiden.
Diese Platine ist für ein 3S Hexacopter gedacht.

Wie flexibel sind eigentlich die LEDs anschliesbar, oder wo dürfen sie überhaupt nicht hin?
Soweit ich weiss kann man jeden Pin benutzen der keine von uns genutzte Funktionen hat.

Bei den Motoranschlüssen habe ich jetzt gelernt wäre es besser bei PD0 mit Motor1 zu beginnen (bis PD5 für Motor6), damit die 4Motorer nur einen Timer brauchen.
Das ist ja nur eine Sache der Programmierung bzw. der Beschriftung. Beides lässt sich ja nachträglich auch ändern.

Was kann man den Größenmäßig noch herausholen? Die Unterseite der Platine (MPU etc.) ist noch ziemlich leer. Vielleicht kann man die LEDs dort hin verfrachten? Aber dann braucht man wieder 3 vias mehr. Keine Ahnung ob das die Kosten oder Fehleranfälligkeit in der Produktion steigert... Allerdings ist so ein via auch beinahe so groß wie eine 0603 LED...

Viele Grüße,
William

bendh
05.04.2012, 21:33
Hallo William,

ok für dich ist das so, ich will einen Jetiempfänger verwenden, geht das auch an einem Seriellen Eingang?
Der Schaltplan stammt übrigens ursprünglich von Harald und ist in manchem schon geändert.(siehe nachfolgende Pläne) Aber da will ja eh jeder etwas anderes :-)
Wenn ich die Löcher enger bohre und die Pins dann einpresse, halte ich das für wesendlich haltbarer als nur auflöten.
Welche Produktion??? Ich will das einfach so als Hobby machen. :-)
Wenn du das herstellen lassen willst, werden die Durchkontaktierungen wohl eh anders erzeugt.
Bei dem Wetter bleibt mir ja eigentlich nichts anderes, als mich einmal hinzusetzen und es auch einmal zu versuchen. :-)

Es wäre also auch möglich PA1 bis PA7 für die LEDs zu nutzen und PC0 und PC1 (SDA und SCL) mit PE0 und PE1 zu tauschen?
Wenn du alles lötest, reicht dir dann auch ein 2poliger Akkuanschluß?

Gruß Bernd

Happy Jack
05.04.2012, 22:28
ich will einen Jetiempfänger verwenden, geht das auch an einem Seriellen Eingang?

Dafür kannst Du einen beliebigen freien PIN nehmen. Das PPM-Summensignal wird mit Input-Capture rel. aufwandsarm ausgewertet. Ich verwende auch einen JETI-Empfänger.

Hans

Willa
05.04.2012, 22:42
ok für dich ist das so, ich will einen Jetiempfänger verwenden, geht das auch an einem Seriellen Eingang?
Der xmega kann Interrupts an allen pins:
"External Interrupts on all general purpose I/O pins" (aus dem Datenblatt)
PC2, also der Pin an dem der Satellitenempfänger hängt, ist m.M. nach auch ein normaler Pin. Da kann also auch ein Empfänger mit Summensignal angeschlossen werden.

Wenn ich die Löcher enger bohre und die Pins dann einpresse, halte ich das für wesendlich haltbarer als nur auflöten.
Welche Produktion??? Ich will das einfach so als Hobby machen.
Ich möchte die Platinen bei Bilex-lp.com fertigen lassen. Die sind günstig und liefern eine gute Qualität (mit Lötstopp, fertig gebohrt etc.). Aber die haben als minimalen Bohrdurchmesser 0.6mm vorgegeben. Das müsste man also ändern.

Bei dem Wetter bleibt mir ja eigentlich nichts anderes, als mich einmal hinzusetzen und es auch einmal zu versuchen.
Ach so? Heute hat in Bremen ausnahmsweise mal die Sonne geschienen. Blöd nur dass ich arbeiten musste X-(

Es wäre also auch möglich PA1 bis PA7 für die LEDs zu nutzen
Von mir aus auch PA0, denn ich habe ja auch keine Spannungsreferenz auf dem Layout.

PC0 und PC1 (SDA und SCL) mit PE0 und PE1 zu tauschen?
Ja, man braucht ja nur ein mal I²C. Egal welches. Ich habe eben den ersten Regler am Hardware PWM zum laufen bekommen. Aus Spaß mal ausprobiert wie schnell der Motor auf Änderungen reagiert. Bis 200 Hz habe ich Drehzahländerungen wahrgenommen. Danach siegt das Trägheitsmoment des Motors.

Wenn du alles lötest, reicht dir dann auch ein 2poliger Akkuanschluß?
Ja, das reicht auf jeden Fall. Ich finde auch die 1.27mm Raster Pinleisten nicht zu klein. Wenn man Lötstopplack hat ist das noch weniger ein Problem.

Ich verzweifel nur langsam an ungenügenden Vorgaben, siehe Hans.
Bernd, du musst jetzt aber auch nicht für jeden ein passendes Layout machen. Auch nicht für mich natürlich. Hier gibt es viele Leute die viele verschiedene Ansprüche haben. Ein für alle passendes Layout wird es nicht geben. Mir ist auch gar nicht klar wer welches Programm auf den Controller spielen möchte. MultiWII? Shrediquette? Was eigenes? Ich z.B. möchte die Platine so klein wie möglich haben (und mit meiner Software in meinem BOLT verwenden) und verzichte daher auf Akkuspannungsüberwachung etc. Es wäre natürlich nett wenn du mir beim Layouten hilfst, weil du es kannst und es dir (wenigstens scheinbar) auch Spaß macht. Aber du musst selber wissen wieviel Energie du investieren möchtest. So ein Open-Source Projekt kann auch schnell mal in Frust enden wenn jeder was anderes fordert und am Ende jeder sein eigenes Süppchen kocht.
Bei diesem, von mir vorgeschlagenem Layout hatte ich primär an die Verwendung in meinem BOLT gedacht. Wenn man mit ein paar kleinen Änderungen die Platine auch allgemeintauglicher machen kann, wäre das schön. Aber größer als 20x20mm wäre für mich dann schon wieder nicht mehr soooooo interessant.

bendh
06.04.2012, 08:18
Hallo William,
ich habe noch nie eine Platine herstellen lassen, desshalb weiß ich nicht ob alle Bedingungen erfüllt sind.
Ich würde sie so ätzen, aber löten möchte ich sie nicht müssen. :-)

bendh
06.04.2012, 08:27
könnte jemand so nett sein und mir die Software vom Chris #3211 so umschreiben und dann als HEX-File schicken, dass der Reciever auf PIN1 liegt, die LED1 auf PIN14, die LED2 auf PIN15, die LED3 auf PIN26, der Motor1 auf Pin22,der Motor2 auf Pin23, der Motor3 auf Pin24, der Motor4 auf Pin25 und die GUI auf PIN16/17.
Es kann auch eine andere Version mit dieser Belegung für 4 Motoren sein, wenn sie schon geflogen ist. :-)
Dann könnte ich auch etwas ausprobieren.

Gruß Bernd

Che Guevara
06.04.2012, 12:00
Hallo Bernd,

ich hab dir mal mein Programm compiliert, mit deinen Belegungen. Ich hoffe es funktioniert, konnte es ja leider nicht testen.
Aber warum hast du die Motoren 1&2 an TimerC0 und die Motoren 3&4 an TimerC1?

Gruß
Chris

bendh
06.04.2012, 12:08
Hallo Chris,

vielen Dank.
Das mit den Motoren wurde einst durch Harald so eingezeichnet und da ich es nicht besser wußte,habe ich es so übernommen.
Ich habe es aber jetzt geändert. In den neuen Layouts sind die Motoren auf PIN 20-25. So hoffe ich ist es recht.

Che Guevara
06.04.2012, 12:51
Kein Problem ;) Gib Bescheid, obs funktioniert.
Btw: auf welche PWM-Werte hast du den deine Regler eingelernt? Meine sind bei 20000 als Minimum und 60000 als Maximum. Das solltest du auch so machen, ansonsten wirds nicht sehr gut funktionieren.
Die PID-Werte werden mittlerweile übrigens auch schon anders skaliert. Ich fliege im Acro-Mode mit meinem Quadro momentan mit P-I-D: 160-40-4 .

Gruß
Chris

bendh
06.04.2012, 13:07
Hallo Chris,

ich habe es aufgespielt. Alle LEDs blitzen, der Sensor gibt Bewegungen von sich in der GUI, aber der Empfänger nicht. Auf welchem Eingang liegt der?
Was meinst du mit 20000 und 60000? In welcher Anzeige?
Fliegst du eine X oder + Anordnung?

Gruß Bernd

bendh
06.04.2012, 13:34
Ich habe jetzt die Empfängerimpulslängen wieder auf normal gestellt, nun geht es. War vorher auf min.1mS, max. 2mS, wie vom MWC gewohnt. :-)

Danke

Che Guevara
06.04.2012, 14:05
Mit 20000 und 60000 meine ich die minimalen und maximalen Werte der Hardware PWMs, angezeigt wird das nirgends.
Ich fliege eine X-Anordnung, finde ich irgendwie sportlicher ;)

Gruß
Chris

EDIT:
Der erste Motor (links vorne) dreht bei mir von oben gesehen IM Uhrzeigersinn. Das ist wichtig für das Gieren ;) Wenn du möchtest, würde ich dir das Programm aber kurz umschreiben, auf + Anordnung oder andere Prop-Drehrichtung?!