Posts

Posts mit dem Label "Servo" werden angezeigt.

PCA9685 PWM Driver Modul mit dem Netduino

Bild
Nach etwas längerer Zeit ist eine Thema mit dem Netduino wieder dran. Diesmal ist das PWM Treiber Modul dran, den ich schon etwas länger hier liegen habe und es ist eigentlich zunächst für den Raspberry Pi gedacht, aber da fehlt mir noch eine neue Platine um einen eigenen Motor Treiber zu bauen. Benötigt wird: Netduino (sollte mit allen Versionen funktionieren) PCA9685 16 Channel PWM Driver (Meins ist nicht von Adafruit) Mindestens ein Servo zum Testen Externe Spannunsquelle mit Maximal 6V Neues Projekt Für das Projekt werden die Referenzen Microsoft.SPOT.Hardware und Microsoft.SPOT.Native die für die I²C und Debug Ausgaben verwendet werden. Neben der bestehenden Program.cs Klasse wird eine eigene Klasse für den PWM Treiber hinzugefügt, die dann den Inhalt hat des hier folgenden gezeigten Code. Weitere Kommentare sind im Github Repository zu sehen. public class Pca9685 : I2CDevice {     private readonly byte PCA9685_MODE1 = 0x00;    

Servo mit dem Xbox Controller steuern

Bild
Das ansteuern eines Servos über einen Xbox One Controller ist simpel umzusetzen. Für dieses Beispiel wird folgendes verwendet: MonoGame Xbox Controller Arduino UNO oder vergleichbar Servo Motor Shield Externe Batterie Nach der Installation von MonoGame sind in Visual Studio mehre Vorlagen verfügbar. Benötigt wird das Template 'MonoGame Windows Project', das im folgenden Bild als erstes in der Liste erscheint. Programmcode mit MonoGame Sobald das Projekt angelegt würde, könnt ihr die Game1.cs Datei öffnen. Für die Verbindung zum Arduino wird die Klasse SerialPort verwendet. Dazu sollte vorher bekannt sein, welcher COM Port bei euch der Arduino verwendet. Die Baudrate von 115200 ist die maximale Geschwindigkeit, die zuverlässig funktioniert. Die restlichen Parameter sind die Default Werte der Seriellen Verbindung zum Arduino (siehe Programmcode). Die überschriebenen Methoden 'Initialization()', 'LoadContent()' und 'Draw()'

Intervallaufnahme mit der Kamera ohne Interne Funktion

Bild
Die Funktion für eine Intervallaufnahme ist simpel, daher ist es für mich unverständlich, warum nicht zumindest die Systemkameras von der Nikon 1 Serie in ihren Modellen diese Option anbieten. Nun gut, dies war kein Kaufkriterium, wäre aber schön gewesen. Ich selbst verwende die Nikon 1 J3 (die J1 hat die Intervallaufnahme), allerdings sollte mein Beispiel auch für andere Kameras funktionieren. Grundsätzlich geht es darum einen Servo auf den Auslöser zu drücken. Für diesen Zweck habe ich aus Aluminium Eckschienen eine Vorrichtung gebaut. Wie schon am Bild zu erkennen ist, sollten zum Schutz die Alu Eckschienen nach der Verarbeitung abgerundet und ggf. mit Filzaufklebern beklebt werden. Die Materialliste: Alu Eckschienen ca. 20cm Filzaufkleber ein paar 3mm Schrauben und entsprechende Muttern Mini Servo mit ca. 10 Ncm Eine passende Schraube zur Kamera dass mit dem Stativ auch verschraubt werden kann. (siehe folgendes Bild) Zum Ansteuern wird der Netduino mit einem pas

PWM / PPM Frequenz an Brushless Motoren mit dem Netduino

Bild
Im Modellbau ist es üblich, dass die Frequenz für PWM bei 50Hz zum Ansteuern von analogen Servos und analogen Motorenreglern verwendet wird. Wer allerdings einen digitalen Servo oder eine digitale Motorensteuerung hat, kann hier eine weit höhere Frequenz verwenden. Besonders bei Modellhelikoptern oder auch bei den Quadrocoptern wird dies gefordert. Der Grund liegt hier klar auf der Hand, dass die Periodendauer wesentlich kürzer wird und somit pro Sekunde mehrmals ein neuer Steuerwert festgelegt werden kann. Bei 50Hz liegt die Periodendauer bei 20 Millisekunden, wovon 1 bis 2 Millisekunden das eigentliche Steuersignal (Duration) abbilden und in den restlichen 18 Millisekunden nichts weiter kommt. Daher habe ich mir gedacht, wie sieht eigentlich dann das Signal aus, wenn es auf 200Hz gesetzt wird. Beispiel Darstellung mit 50Hz PWM Signal mit einer Periodendauer von 20ms. Beispiel Darstellung mit 200Hz PWM Signal mit einer Periodendauer von 5ms Schnell stellt sich heraus, d

PWM Signal Einlesen mit dem Netduino

Bild
Der Empfänger am Netduino Es gibt zwei Lösungen, wie man ein PWM Signal einlesen kann. Über eine RC Schaltung mit der “AnalogInput” Klasse oder vollständig programmatisch. Wenn keine Bauteile wie Widerstand und Kondensator vorhanden ist, dann erübrigt sich das letztere. Beim Arduino kennt man bereits aus der Library die Methode ‘pulseIn()’. Leider wurde das für den Netduino noch nicht umgesetzt. Alternativ bleibt die Möglichkeit, die sich ändernden Pulszustände zeitlich zu messen und das geht hervorragend mit der “InterruptPort” Klasse. /// <summary> /// Dieses Klasse ermöglicht das genaue Einlesen des eingehenden Pulssignals /// </summary> private static InterruptPort _IntPort = new InterruptPort (     Pins . GPIO_PIN_D0 ,     true ,     Port . ResistorMode .Disabled,     Port . InterruptMode .InterruptEdgeBoth); /// <summary> /// Wird verwendet um den Startzeit des Pulssignals zu merken /// </summary> private static long _HighTicks = 0; /// <