Archiv der Kategorie: Quadcopter

Der Quadcopter auf github

Es gibt tolle Neuigkeiten bezüglich des Quadcopter-Projekts. Den kompletten Programmcode kann man nun auf github finden. Der Code steht öffentlich zur Verfügung und wird immer weiter entwickelt. Mal kommt was neues dazu, mal werden bestehende Probleme beseitigt, mal werden ganze Klassen wieder umgekrempelt, weil man damit entweder Code sparen kann oder es anschließend einfacher komfortabler wird. Schaut es euch einfach in Ruhe an: Quadcopter auf github. Und wie immer: Bei Fragen, fragt.

Erste Informationen zum Programmablauf im Quadcopter

Ich habe soeben eine erste Unterseite zum Quadcopter-Projekt angelegt, die euch den Aufbau und Inhalt des bisherigen Quellcodes vom Quadcopter näher bringen soll. Klickt dazu einfach im Menü auf Projekte -> Quadcopter -> Das Programm oder wählt den schnellen Weg über diesen Link.

Falls ihr Fragen oder Kritik dazu habt, nutzt am besten die Kommentarfunktion auf der entsprechenden Seite und nicht die unter diesem Beitrag.

Stabilitätsuntersuchungen

Ihr kennt ja unsre Deckenkonstruktion als Copterhalterung aus dem letzen Video. Diese hat sich zwar Wacker geschlagen, kommt aber nicht an das schicke neue Holzgestell heran.
Damit hängt der Copter schon viel näher an dem Ankerpunkt und es ist fast so gut, als hätten wir Achsen dafür verwendet.
Wie gut das funktioniert, könnt ihr schon bald in unserem nächsten Video sehen.

20130109-235310.jpg

AOYUE und Flux-Paste retten die Hauptplatine

Nach stundenlangem Suchen nach dem EINEN Fehler, haben wir ihn gefunden! Vielen Dank gilt der AOYUE Reflow Station und der wunderbaren Flux-Paste, die alle Kontaktschwierigkeiten auf dem ATXMega-Board unseres Quadrocopters beseitigt haben.

Dabei haben wir doch keine Zeit!

Aber jetzt kann es endlich beruhigt und ohne hässliche Ausfälle einzelner Sensoren und Debugging-Displays an die Programmierung des Lagereglers gehen, der eigentlich schon lange seinen Dienst leisten sollte. Nur dazu muss eben alles auch korrekt funktionieren.

Und wer den Livestream heute verpasst hat, darf unser neustes Mitglied Patrick begrüßen. Er wird sich um die Programmierung der Fernsteuerung auf einem ATMega8 kümmern und zunächst einmal alle Joystick-Tasten und -Achsen auslesen, mit denen der Quadcopter in Zukunft gesteuert werden soll. Aber dazu später mehr und mit Bildern.

Das war’s dann erst einmal für den heutigen Abend. Am nächsten Mittwoch geht es wieder weiter, wenn es wieder heißt: „ON AIR!“

Wie ist denn nun der Innenwiderstand???

Wie ihr aus dem vorausgegangenen Artikel entnehmen könnt, hat der Innenwiderstand des Ausgangspin am ATXmega wohl nicht so ganz zu Theorie und Simulation gepasst. Falsch gedacht! Mittels einfacher Bestimmung durch die halbe Klemmenspannung ergibt sich ein Innenwiderstand von knapp 60 Ohm, genug also um die Schaltung zu treiben.
Daher hab ich die Schaltung kurzerhand mal mit dem Funktionsgenerator befeuert und mir das Signal am Oszilloskop angesehen. Wieso zeigt der Funktionsgenerator denn keine Amplitude? Er wird doch sicherlich nicht kaputt sein. Nein, wenn ich ihn abschließe, zeigt er das eingestellte Signal. Einzige Lösung: En Kurzer!
Da hatte sich ne Litze auf dem weg zum Lötpunkt verirrt und schloss das Signal mit Masse kurz. Gut dass es jetzt wie simuliert funktioniert und Atmel einen Überlastungsschutz eingebaut hat 😉

PWM-Booster

Da wir in unserem Quadcopter einen ATXmega verwenden, welcher mit 3,3V betrieben wird, während die Motorcontroller ein 5V-PWM Signal erwarten muss das Signal entsprechend verstärkt werden. Natürlich hätte es eine weniger reißerische Überschrift als ‚Booster‘ getan, gerade wenn es sich um eine Pegelwandlung handelt, aber das Thema gestaltet sich doch ein wenig größer als gedacht.

Zunächst noch einmal kurz zu den grundlegenden Parametern:
Wir wollen auf Grund der Größe und Komplexität auf einen TTL-Chip verzichten, von 3,3V auf 5V wandeln, die Frequenz ist dabei nicht größer als 16kHz, der Duty-Cycle bei 5-10%. Die Rise- und Fall-Zeiten des Signals am AVR waren nicht im Datenblatt von Atmel dokumentiert, weshalb dafür eine Messung an unserem Oszilloskop zu Rate gezogen wurde.

Ich habe zunächst mal eine einfache Transistorschaltung in LTspice eingeklickt, ein paar Parametter angepasst und simuliert. Natürlich muss da auch der Innenwiderstand der Quelle, also dem ATXmega und der Lastwiderstand des Motorcontrollers berücksichtigt werden, was sich gar nicht einfach gestaltete. Der Lastwiderstand wurde mit 20kOhm als ausreichend klein angenommen, sollte soweit passen, der Innenwiderstand des Output-Pin am ATX war in keinem Datenblatt von Atmel angegeben, sodass ich den Maximalstrom am Pin und die Versorgungsspannung des AVR dafür nutzte, den Widerstand zu berechnen. Dieser ergibt sich aus 8mA und 3,3V als 412Ohm und liefert in der Simulation ein wirklich verwertbares Ergebnis. Selbst der Strom durch Rb ist mit 3.5mA im absolut verträglichen Bereich.

In Realitas gibt es mal wieder Probleme und es dürfte daran liegen, dass der Innenwiderstand des Pin doch nicht den Wert besitzt, den man theoretisch errechnen kann. Die Schaltung tuts am AVR einfach nicht. Alle softwarespezifischen Probleme wie Pullup und sonstiges können ausgeschlossen werden, da wir alles durchprobiert haben, morgen geht es dann weiter mit einer Bestimmung des Innenwiderstandes per Ausgleichgerade. Mal sehen, was das so bringt…