Anzeige 
Seite 1 von 4 1234 LetzteLetzte
Ergebnis 1 bis 15 von 56

Thema: PWM-Library für Arduino-Basis für Beleuchtung und Servoansteuerung (Open Source)

  1. #1
    User
    Registriert seit
    30.10.2014
    Ort
    -
    Beiträge
    98
    Daumen erhalten
    10
    Daumen vergeben
    18
    0 Nicht erlaubt!

    Standard PWM-Library für Arduino-Basis für Beleuchtung und Servoansteuerung (Open Source)

    Im Rahmen eines Semi-Scale-Projekts habe ich eine kleine Steuerung für LEDs und ein Scheinwerferservo geschrieben.

    Man kann damit bis zu 10 PWM-Kanäle unabhängig aber phasensynchron steuern. Es lassen sich verschiedene Beleuchtungsmuster über einen Empfängerkanal schalten. Dabei können die einzelnen Kanäle lineare "Rampen" in der Pulsweite fahren. Damit lässt sich z.B. ein Servo langsam verfahren oder ein Rundumlicht simulieren. "Programmiert" wird mit ein paar simplen Makros.

    Die Verarbeitung ist komplett Interrupt-getrieben, damit bleiben ein paar Prozent Rechenleistung (je nach Anzahl der Kanäle) für sonstige Aufgaben frei.

    Das Video zeigt ungefähr, wie das Ganze arbeitet.
    http://www.rcmovie.de/video/7350e23b...r-Arduino-Nano

    Entscheidend war für mich ein möglichst geringer Lötaufwand. Das Arduino-Modul kann für ca. 10 Euro erworben werden, damit halten sich die Kosten ebenfalls im Rahmen. Der Arduino Nano ist direkt per USB an den PC anschliessbar und man muss nicht mit unhandlichen "Programmern" rumhantieren. Die LED-Ansteuerung ist nicht Teil des Projekts, eine einfache Schaltung mit einem Darlington-Treiber liegt der Doku jedoch bei. Eine direkte Ansteuerung durch die Arduino-Ports ist bis 40mA Strombedarf ebenfalls möglich, so dass externe Bauteile komplett entfallen können.

    Die Software inklusive Dokumentation kann hier heruntergeladen werden:
    http://sourceforge.net/projects/arduinounipwmlib/

    Ein paar Beispiele für die Programmierung liegen bei.

    An wen richtet sich das Projekt ?
    --> An alle, die sich ein Beleuchtungsmodul selbst bauen möchten (und lötfaul sind).
    --> An Leute mit ein wenig Arduino-Erfahrung oder solchen, die dieselbe im Rahmen eines solch einfachen Projekts erwerben möchten.

    Viel Spaß damit!
    Bernd
    Like it!

  2. #2
    User
    Registriert seit
    30.10.2014
    Ort
    -
    Beiträge
    98
    Daumen erhalten
    10
    Daumen vergeben
    18
    0 Nicht erlaubt!

    Standard

    Mit dieser Zeile lässt sich z.B. ein Beacon-Licht programmieren:

    SEQUENCE( beacon) = { RAMP(0,45,20), RAMP(45,200,20), CONST(200,20), RAMP(200,45,20), RAMP(45,0,20), PAUSE(20) };

    Das Beacon-Licht schwillt dabei über 2 lineare Rampen an und wieder ab.

    Insgesamt kann man so mit wenigen Zeilen ein komplettes phasenkonstantes Beleuchtungschema programmieren, das sich über den Sender umschalten lässt. Das "beacon"-Beispiel arbeitet auf einem "nackten" Arduino-Modul ohne dass man einen Lötkolben in die Hand nehmen muss.
    Like it!

  3. #3
    User
    Registriert seit
    30.10.2014
    Ort
    -
    Beiträge
    98
    Daumen erhalten
    10
    Daumen vergeben
    18
    0 Nicht erlaubt!

    Standard

    Hier noch ein Beispiel, wie man das Servo für den Landescheinwerfer programmiert.

    Es gibt zwei Sequenzen, eine zum Ausfahren und eine zum Einfahren. Das Server fährt bei beiden innerhalb einer Sekunde in die Position.

    #define RETRACT_POS 10
    #define ASCEND_POS 255
    SEQUENCE( retract ) = { RAMP( ASCEND_POS, RETRACT_POS, 100 ), HOLD( RETRACT_POS ) };
    SEQUENCE( ascend ) = { RAMP( RETRACT_POS, ASCEND_POS, 100 ), HOLD( ASCEND_POS ) };

    So fährt man das Servo aus:

    pwm.SetOutChannel( LANDING_SERVO, ARRAY( ascend ), UniPWMChannel::ANALOG_SERVO );


    Eine solche Sequenz lässt sich millisekundengenau mit dem Einschalten des Landescheinwerfers koppeln. Man kann diesen einschalten, sobald das Servo in der Ausgefahren-Position ist. Der Landeschweinwerfer lässt sich dann auch wieder über eine Sequenz steuern, man kann ihn z.B. langsam" verlöschen lassen.
    Like it!

  4. #4
    User
    Registriert seit
    29.09.2010
    Ort
    Oberkirch
    Beiträge
    1.542
    Daumen erhalten
    25
    Daumen vergeben
    7
    0 Nicht erlaubt!

    Standard

    Hier der funktionierende RC-Movie Link:
    http://www.rcmovie.de/video/7350e23b...r-Arduino-Nano
    Like it!

  5. #5
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard Saubere Sache...

    Ich danke für den Hinweis und die Programme! Genau das wo ich jetzt schon ein paar Tage das Netz für durchsucht habe. Danke!
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  6. #6
    User Avatar von BZFrank
    Registriert seit
    28.12.2006
    Ort
    Metzingen
    Beiträge
    3.539
    Daumen erhalten
    325
    Daumen vergeben
    20
    0 Nicht erlaubt!

    Standard

    Auch von mir ein grosses Danke! Es hat mir bei einem aktuellen Projekt sehr geholfen.

    Gruß

    Frank
    Like it!

  7. #7
    User
    Registriert seit
    30.10.2014
    Ort
    -
    Beiträge
    98
    Daumen erhalten
    10
    Daumen vergeben
    18
    0 Nicht erlaubt!

    Standard

    Würde mich interessieren, wie Ihr mit der Art der Programmierung zurecht kommt. Das Ganze ist ein wenig "gewachsen". Die Makros habe ich erst am Ende "draufgepfropft".

    Was mich auch interessieren würde: Reicht die Auflösung für die Servoansteuerung und den Empfängereingang ? Mir ist letztens ein "Teensy 3.1" in die Hände gefallen. Der könnte von der Hardware her deutlich mehr bringen.

    Viele Grüße
    Bernd
    Like it!

  8. #8
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard

    Hab die Software jetzt auf einem Nano zum laufen gebracht. Wenn ich den Leistungsteil fertig habe, werde ich hier kurz berichten.
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  9. #9
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard Es funktioniert mit Mosfet wie erwartet.

    So 2 Tests mit unterschiedlichen Pattern. Beacon light und Doppelblitz:

    http://youtu.be/yvgNoxtw4Ww

    http://youtu.be/UC1cid73keA

    Real geht es gleichmäßig, wenns ruckelt liegts am Rechner oder an Youtube...

    Nun noch 5 Endstufen auf eine kleine Platine und fertig...
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  10. #10
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard Ein paar Bildchen zur Endstufe (Prototyp mit nur 5 Ausgängen)

    Name:  5.jpg
Hits: 5929
Größe:  148,3 KB

    Name:  1.jpg
Hits: 5656
Größe:  94,2 KB

    Name:  2.jpg
Hits: 5856
Größe:  173,8 KB

    Name:  2.jpg
Hits: 5856
Größe:  173,8 KB

    Name:  4.jpg
Hits: 5810
Größe:  245,9 KB

    Die Grundfunktion sieht nun so aus:



    ACL-Doppelblitz, Einfachblitz, Beacon, Landescheinwerfer...



    Testweise habe ich die Landescheinwerfer mal als MG geschaltet. Dies ist aber auch über einen weiteren Kanal möglich.

    Als MOSFET habe ich IRLZ34N benutzt nach der obigen Schaltung. Es geht aber auch jeder andere N-dotierte MOSFET mit Logik Level Gatespannung.

    Die Spannungsüberwachung des 3S Lipo läuft über einen Spannungsteiler 8,2 und 2,7 Kiloohm an Eingang A0 des Arduino.

    Im RC-Heli Forum, läuft ebenfalls ein Entwicklungsthread dazu. Bernd (Sepp62), der Programmierer der Software, ist sehr hilfsbereit und will noch eine Leistungsplatine entwickeln. Mal sehen ob die leichter und kompakter wird.
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  11. #11
    User
    Registriert seit
    06.10.2003
    Ort
    Poing
    Beiträge
    523
    Daumen erhalten
    0
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    Hi Peter,

    na, da hast Du aber auch ein paar "Bauklötze" als MOSFETs genommen!
    Dabei ist dieser Typ hierfür noch nicht mal besonders gut, was z.B. den RDSon betrifft - 60 mOhm bei 4V Gatespannung, naja...

    Ich würde nach einem passenden FET im SO-8 Gehäuse suchen. Die Auswahl ist groß und die FETs wiegen im Vergleich zu den TO-220 Brummern praktisch nix! Ok, das SO-8 Gehäuse ist nicht ganz so "bastlerfreundlich", weil es keine Pins hat, die man durch die Löcher in der Lochrasterplatine stecken kann. Das ist aber nicht so schlimm, man kann ihn auf der Kupfer-Seite auf die Lötpunkte der Platine auflöten. Oder Du machst Dir selbst ein "Through Hole" Bauteil draus, indem Du Drähtchen anlötest. Wenn nicht gerade extrem große Ströme geschaltet werden sollen, kann man evtl. auch einen Dual-MOSFET (2 Stück in einem Gehäuse) nehmen. Es gibt auch Power-MOSFETs im SOT-23 Gehäuse, die auch schon ein paar Ampere verkraften! Auch diese Gehäuseform lässt sich noch gut mit Hausmitteln verarbeiten!

    Bei der Auswahl muss man auf folgende Kriterien achten:
    - maximale Spannung (Vdss) zwischen Drain und Source, muss natürlich über der maximal angelegten Spannung liegen. Bei 3s-Akku wird man damit eher keine Probleme haben.
    - möglichst kleiner Einschalt-Widerstand (RDSon). Wenn Strom durch den FET fließt, fällt durch den Widerstand eine Spannung ab, und diese Spannung x Strom gibt die Verlustleistung (->Wärme!) am FET, also P=R*I*I. Bei Deinem IRLZ34N (mit 60mOhm) und 5A wären das schon 1,5W.
    FETs in kleinen Gehäusen können natürlich nicht soviel Verlustleistung abführen. Mit weniger als 200 mW ist man aber selbst beim winzigen SOT-23 Gehäuse auf der sicheren Seite.
    - Der FET sollte einen niedrigen RDSon schon bei kleiner Gate-Spannung erreichen (deshalb "logic-Level"). In den Daten muss man dafür nach dem Parameter "Threshold Voltage" suchen (Vth). Diese sollte nicht über 2V liegen. Ich nehme an, der Arduino hat einen 3,3V Spannungsregler on Board und gibt demzufolge auch keine höhere Spannung als diese an den FET. Also ist der Einschaltwiderstand des FETs bei UGS=3V relevant!

    Grüße,

    Thomas
    Like it!

  12. #12
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard

    Danke Thomas, für die Hinweise, alles richtig. Meine Platine ist ein Prototyp. Die nächste baue ich mit Mosfets im D-Pak Gehäuse. Mit der Verlustwärme haben die Brummer keinerlei Probleme Sie werden bei meiner Belastung nicht warm und schalten auch komplett durch. Die habe ich nur genommen, weil sie mit 40 Cent gerade günstig zu bekommen waren. Das Hauptziel war mit der gesamten Schaltung unter 8 Euro zu bleiben incl. Arduino. Das ist gelungen. Ich stand in Konkurenz mit einem Projekt wo es um umprogrammierte Fahrtregler ging auch zur Beleuchtungszwecken. Die sind aber unflexibel und nicht so einfach umzuprogrammieren wie die hier gezeigte Softwarelösung vom Bernd.
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  13. #13
    User
    Registriert seit
    06.10.2003
    Ort
    Poing
    Beiträge
    523
    Daumen erhalten
    0
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    Hallo Peter,

    Zitat Zitat von Kyrill Beitrag anzeigen
    Die habe ich nur genommen, weil sie mit 40 Cent gerade günstig zu bekommen waren.
    habe gerade bei Reichelt ein paar IRLML2502 bestellt. Die sind im SOT-23-Gehäuse, haben 50mOhm bei Ugs = 2,5V und kosten nur18 Cent. Für Lasten bis ca. 2A Dauer, im Blitzbetrieb deutlich mehr, kann man die gut nehmen!
    Like it!

  14. #14
    User Avatar von Kyrill
    Registriert seit
    06.08.2012
    Ort
    Lünen
    Beiträge
    1.712
    Daumen erhalten
    48
    Daumen vergeben
    116
    0 Nicht erlaubt!

    Standard Ich war auch noch mal einkaufen..

    War gerade beim blauen C und habe mir 10 Stück IRLML0030 (0,14 das St.) bestellt. Die schaffen so 5 Ampere das reicht auf alle Fälle aus. Bin durch den Originalbeitrag mit dem LED Maschinengewehr darauf gekommen. Da ist ein Foto bei wie die kleinen Winzlinge auf einer Lochrasterplatine mit Streifen montiert sind Das scheint durchaus ein gangbarer Weg zu sein. Ich muß dazu sagen ich bin kein Elektroniker sonder Laie, aber ich traue mich dran...

    Ich überlege noch ob man wirklich die beiden Schutzwiderstände weglassen sollte. habe immer einen 180 Ohm zwischen Pin und Gate und einen 10 KOhm zwischen Gate und Source liegen. Was meinst du einfach mal weglassen und gucken? Der 10 KOhm soll für einen definierten Einschaltzustand beim hochfahren sorgen und der 180er den Pin schützen. Wenn es ohne die Widerstände auch ginge bekäme man alle 10 Kanäle zwischen die Beine des Arduino Nano das wäre schon schön kompakt. Bei dem angeführten LED MG im Amiforum haben sie auch keine Widerstände verbaut.
    Gruß aus Lünen a.d. Lippe vom Peter

    FSG Lünen - Modellflug mein Verein!
    Like it!

  15. #15
    User
    Registriert seit
    06.10.2003
    Ort
    Poing
    Beiträge
    523
    Daumen erhalten
    0
    Daumen vergeben
    0
    0 Nicht erlaubt!

    Standard

    Hallo Peter,

    der IRLML0030 ist hierfür wohl nicht gerade das Gelbe vom Ei - vielleicht hättest Du besser die 4 Cent mehr in den IRLML2502 investieren sollen, Conrad hat den ja auch! Das Problem beim '0030 ist, daß er erst richtig leitet bei deutlich höheren Gatespannungen, als der '2502.
    Schau mal im Datenblatt (Fig. 1, "typical output characteristic"): Bei Vgs = 3V und 2A fällt über den '0030 schon fast 0.2V Spannung ab, das ergibt fast 0,4W Verlustleistung, für SOT23 ist das schon ziemlich viel! Beim '2502 sind die Linien bei 2A noch nicht mal im Bereich der Graphik. Erst bei ca. 3A hat der FET 0.1V Spannungsabfall, d.h. er muß bei 3A erst 0,3W "verbraten"!
    Naja, bei kleinen Strömen wird's schon gehen... (5A gehen mit 3V Gatespannung beim '0030 gar nicht, beim IRLML2502 wären >10A-Impulse kein Problem)

    Die 10k Pull-Down Widerstände würde ich keinesfalls weglassen! Wenn der Controller den Ausgang nicht treibt, kann es sonst passieren, daß der FET die halbe Versorgungsspannung "verbraten" muss, was je nach Last eine Verlustleistung erzeugen kann, die den FET in Sekunden zerstört.
    Ports können auch durch Softwarefehler hochohmig werden bzw. bleiben.
    Den 180 Ohm-Gatewiderstand kann man evtl. eher ungestraft weglassen, wobei seine Funktion wohl weniger dem "Schutz" dient, als der Begrenzung der Steilheit der Schaltflanken. Ich würde aber auch diesen Widerstand drinlassen. Wg. Platzproblemen könntest Du ja auch auf SMD-Widerstände zurückgreifen. In 0603er-Bauform lassen sich diese noch gut mit einer feinen Lötspitze und spitzer Pinzette verarbeiten.

    Gruß

    Thomas
    Like it!

Seite 1 von 4 1234 LetzteLetzte

Ähnliche Themen

  1. Antworten: 42
    Letzter Beitrag: 20.07.2018, 14:36
  2. Antworten: 42
    Letzter Beitrag: 23.11.2012, 22:05

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •