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

Hej, sieht sehr interessant aus.

Aber die Platine geht irgendwie gar nicht (optisch). Hast Du nicht nen Schaltplan im z.b. Eagle-Format mit dem Du Dir ein "richtiges" Platinenlayout herstellen kannst? Sieht dann noch cooler. aus :)
Grüße
 

Kyrill

User
Hej, sieht sehr interessant aus.

Aber die Platine geht irgendwie gar nicht (optisch). Hast Du nicht nen Schaltplan im z.b. Eagle-Format mit dem Du Dir ein "richtiges" Platinenlayout herstellen kannst? Sieht dann noch cooler. aus :)
Grüße

Besser kann ich es nicht aber du darfst gerne mitmachen. Das Projekt ist ja open source...
 

Sepp62

User
Neue Platine

Neue Platine

Erste Infos zur neuen Platine:

- 10 PWM Ausgänge
- 8 davon sind Leistungsausgänge mit theoret. 3A pro Ausgang (Summe theoret. 14 A)
- 2 davon mit 30mA
- 1 Servoausgang
- 1 Empfängereingang, optogekoppelt
- Low-side geschaltet mit Kurzschluss- und Temperaturüberwachung
- SMD, kompakt, einfach zu löten
- Überwachung der Versorgungsspannung

Alles noch ungetestet

Hier die Schaltung und ein paar Bilder:
 

Anhänge

  • NanoProFetBoardPCB.pdf
    38 KB · Aufrufe: 233
  • NanoProFetBoardSch.pdf
    21,1 KB · Aufrufe: 252
  • NanoProFetTop.jpg
    NanoProFetTop.jpg
    73,6 KB · Aufrufe: 290
  • NanoProFetBot.jpg
    NanoProFetBot.jpg
    44,5 KB · Aufrufe: 231

Sepp62

User
In der Ausführung habe ich für 10 Stück mit 70 Mikrometer Kupferauflage 110 Euro bezahlt (Ausführungszeit 12 Arbeitstage). Da die Nutzengröße meist Überlieferungen möglich macht, hätte ich ca. 20 Stück für rund 150 Euro bekommen (wollte ich aber nicht, da die "Null-Serie" gern mal Bugs hat).
 

Sepp62

User
Neue Version 1.05

Neue Version 1.05

Die Version 1.05 ist nun freigegeben.

Release Notes seit der letzten freigegebenen Version 1.02:

1.03 01/15/2015
Sleep mode changes - dont let CPU sleep
Analog pin for voltage measurement can be defined in SetLowBatt(...)
You can provide the receiver input value in DoLoop(...) now to replace the receiver output by some other measurement

1.04 03/04/2015
multiple input channels, new sample4 to demonstrate usage of 2nd rc input

1.05 03/07/2015
storage structure modified to separate workdata from static data (no separate SEQUENCE() for each pin needed anymore)

Zum Download:

http://sourceforge.net/projects/arduinounipwmlib
 

Sepp62

User
Neue Platine ca. 2 Ampere pro Ausgang, 8 Power-Kanäle

Neue Platine ca. 2 Ampere pro Ausgang, 8 Power-Kanäle

Die neue Platine hat in meinen Tests gut funktioniert, auch wenn ich die Möglichkeiten (insbesondere den Strom) mit den mir verfügbaren LEDs (3W Emitter) lange nicht ausgereizt habe.

Schaltplan und Platinenlayout ist nun im Eagle-Quellformat hier verfügbar.

https://sourceforge.net/projects/ard...iles/Hardware/

Zu den Bauteilekosten:

- Es sind relativ teure Bauteile verbaut. Die BTS724G kosten rund 5 Euro pro Stück und der Optokoppler rund 3-4 Euro. Dafür haben die BTS724G eine Reihe von Schutzschaltungen.
- Wer mit 500mA pro Ausgang leben kann, kommt mit der UDN2981-Lösung wesentlich günstiger weg (Schaltplan siehe Doku der UniPWM-Library).
- Wer den Strom braucht, aber weniger Geld ausgeben möchte, orientiere sich an der Lösung von Peter (Kyrill). Dafür muss aber etwas mehr gelötet werden (je nach Anzahl Kanälen) und es gibt weniger Sicherheitsschaltungen.

Zur Platinenfertigung:
- Eagle-Dateien können viele Platinenfertiger direkt verarbeiten. Als Prototyp habe ich für 10 Stück ca. 110 Euro bezahlt. Wenn man mehr Platinen nimmt, kommt man schnell auf einen deutlich günstigeren Preis.

Zu den Anschlüssen:
- Es sind doppelreihige Postenfeldstecker vorgesehen. Das Layout erlaubt aber auch einreihige Stiftleisten oder natürlich das direkt Anlöten von Kabeln.
- Die Vorwiderstände habe ich nach einiger Überlegung (Größe/Verlustwärme) NICHT auf die Platine gemacht (Ausnahme sind die zwei "Low-Power"-Ausgänge).
 
R

Racker

Gast
Hallo
Würde das auch gerne aufspielen, bekomme aber folgende Fehlermeldung.

UniPWM1\UniPWMControl.cpp.o: In function `UniPWMControl::Init(int, int)':
C:\Arduino101\arduino-1.0.1\libraries\UniPWM1/UniPWMControl.cpp:47: undefined reference to `operator new[](unsigned int)'
C:\Arduino101\arduino-1.0.1\libraries\UniPWM1/UniPWMControl.cpp:50: undefined reference to `operator new[](unsigned int)'

Board Arduino Nano 3.0
in Arduino 1.01 ist als board Arduino Nano w/ ATmega 328
Programmer USBasp

MFG
Racker
 
R

Racker

Gast
Hallo
Erstmal muss ich sagen Super Sache. Genau das was ich gesucht habe.
Nachdem nun das Aufspielen des Sketchs funktioniert hat, habe ich noch eine Frage. Wie stellt man es an, das man die Leds ein und ausschalten kann mit dem Sender?
Ich habe eine DX10t und habe das Empfänger Signal an D2 (pin5) angeschlossen. An meinem Empfänger ist er auf Kanal5 mit einen 3 Stufenschalter. Der zeigt auch an das geschaltet wird. Leider tut sich bei den Leds nichts.
Da ich nicht der große Arduino Freak bin, finde ich da auch nichts m Sketch was ich ändern könnte.
MFG
Racker
 

Sepp62

User
Die Vorgehensweise für die RC-Steuerung ist grob wie folgt:

1. Ein Empfängerausgang wird an D2 angeschlossen und z.B. auf einen 3-Stufenschalter gelegt.
2. Den Pin setzt Du mit diesem Befehl: ctrl.SetInpChannelPin( 2, UniPWMInpChannel::INP_NORMAL );
3. Wenn Du einen Optokoppler oder eine andere invertierende Eingangsschaltung verwendest, musst Du ggf. INP_INVERTED setzen. Das findest Du aber über die folgenden Schritte heraus.
4. Nimm' am Besten das Sample 3 und lade es in den Arduino.
5. Schließ' den Arduino per USB an und starte den Serial-Monitor in Deiner IDE. Prüfe die Logausgabe hinter dem Begriff "in". Dies ist der Wert, den die Software für die Schalterstellung ermittelt. Jede Schalterstellung muss eine klare Wertanzeige ergeben. Wenn das nicht so ist, wechsel' den Invertierungsmodus in SetInputChannel (siehe 2.).
6. Definiere für jeden Wert einer Schalterstellung einen gültigen Bereich. Wenn eine Schalterstellung z.B. den Wert 43 hat, definiere z.B. 40 und 46 als Bereich.
7. Leg' die Bereiche für jedes Pattern über diesen Befehl fest: ctrl.AddInputSwitchPos( 40, 46, PATTERN_LANDING );

Viel Glück !
 
R

Racker

Gast
Hallo Sepp
Habe es nach 3 Tagen Hinbekommen :rolleyes: Das mit den Werten hatte ich verstanden, nur nicht wie man da dran kommt. Hatte den Serial Monitor an, aber da passierte nichts. Jetzt hatte ich das alle freiverdrahtet hier auf dem Tisch liegen und und packe den Arduino an. Und was passiert? Plötzlich werden im Monitor die werte angezeigt.Werte eingetragen und aufgespielt und alles Klappt. Kann das daran liegen, das ich keinen Spannungsteiler eingebaut habe? Habe zur zeit nix passendes da.
Könnte man die Spannungs überwachung rausnehmen?

Ich weiß viele fragen.:)
MFG
Racker
P.S Hatte mich extra im RC-heli angemeldet, aber werde nicht freigeschaltet.
 
R

Racker

Gast
Moin
Habe ich schon gemacht.Aber irgentwie klapp es nicht. Sketch läuft soweit.
Das habe ich auskommentiert
ctrl.SetLowBatt( 510, PATTERN_OFF ); // Ausschalten (635 ~12,55 Volt, switch off value ~ 561 (3.7V bzw 11,1V gesamt) ueber Spannungsteiler + 8,2K Abgriff 2,7 K Masse an Pin A0

und das
// battery warning at 11,8 volt
int battVal = analogRead( 0x0 );
if( battVal < 520 ) // Wert auf die "vorwarn"-Spannung anpassen (PATTERN_LOW)
ctrl.ActivatePattern( PATTERN_LOW );
else

Umschalten per Funke kann ich aber nur, wenn ich wie Oben beschrieben den Arduino anfasse. Denke das ich mit meinem Wiederstand da irgenwas auslöse.
Kann es nicht anders erklären
 
Hallo zusammen,

ich möchte mir auch eine Beleuchtung für ein Modell bauen bestehend aus Positions- und Antikollisionslicht, Beacon und Landescheinwerfer. Ich habe schon etwas Erfahrung mit NODEMCUs und ESP12. Ich habe hier auf Seite 2 das Schaltbild mit dem Arduino Nano gesehen, welches 5 Kanäle schalten kann. Das würde mir locker reichen. Dazu hätte ich noch ein paar Fragen und hoffe, Ihr könnt mir helfen:

  • Ich habe noch keine Erfahrungen mit Transistoren/MosFets. Welche empfehlt Ihr und wie legt man den Ausgang dann auf die LED?
  • Welche LEDs soll man bloß nehmen? Alles was man so findet als "bedrahtete" LED hat zu wenig Leistung und bei denen mit mehr Leistung ist dann eine Kühlung erforderlich und dann muss man sich wieder einiges einfallen lassen, Kühlkörper auszulegen und die mit in die Fläche reinzubekommen. Ob dann noch genügend Kühlwirkung vorhanden ist, ist ja auch fraglich. Könnte man die LEDs von Unilight direkt verwenden am Arduino? Wie sind diese dann zu verschalten?

Danke Euch schon mal
Viele Grüße
Michael
 

onki

User
Hallo Michael,

es gibt da auch eine andere Herangehensweise.
http://der-frickler.net/modellbau/avr/esclight

Da werden kleine Brushless-Regler als Treiberstufe verwendet, da die schon alles mit an Bord haben (außer einer Konstantstromquelle).
Die Firmware der Regler lässt sich einfach neu aufspielen. Man muss nur die nötigen Kabel neu anlöten.

Sofern du das mit dem Arduino machen möchtest, würde ich ggf. darüber nachdenken die Endstufen komplett auszulagern.
Es gibt fertige Konstantstromquellen als Platinen mit Dimmer-Eingang. Dieser PWM-Eingang kann das Hi-Low Schaltsignal vom Arduino direkt verwerten.
http://www.ebay.de/itm/3-x-CCS2-350...025972?hash=item41c3c02db4:g:8RsAAOSw60lXMS~9
Die gibt es auch für höhere Ströme.
Hab ich in ähnlicher Form bei meinem E-Segler Beacon realisiert. Dort kommt das Signal direkt aus dem Empfänger, da bei Jeti dankenswerterweise der Servoausgang auch als Digital I/O fungieren kann.
Als LED verwende ich i.d.R. 1W Power Leds (oder auch mal 2W/3W Varianten).
http://www.ebay.de/itm/390535723433...49&var=660113280756&ssPageName=STRK:MEBIDX:IT

Die klebe ich mit Wärmeleitkleber auf entsprechend große Maschinenschrauben (Sechskant) und isoliere die Anschlüsse mit Schrumpfschlauch. Die Schraube dient dann als Kühlkörper. Sollte dann entsprechend lang sein.

Gruß
Onki
 
Hallo Zusammen,

ich hab mich gerade mal mit dem "NANO" beschäftigt und ein upload versucht (Version 1.0.5)
Achtung: Maschinenbauer (Mechaniker) mit einer Menge Halbwissen :rolleyes:

Da kommen eine Menge Fehlermeldungen:

UniPWM_Sample16_mg_10ch:24: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:25: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:26: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:29: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:32: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:35: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:38: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:41: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:44: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:45: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:50: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:51: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:52: error: expected constructor, destructor, or type conversion before '(' token
UniPWM_Sample16_mg_10ch:54: error: 'UniPWMControl' does not name a type
UniPWM_Sample16_mg_10ch.ino: In function 'void setup()':
UniPWM_Sample16_mg_10ch:63: error: 'ctrl' was not declared in this scope
UniPWM_Sample16_mg_10ch:65: error: 'UniPWMInpChannel' has not been declared
UniPWM_Sample16_mg_10ch:68: error: 'retracted' was not declared in this scope
UniPWM_Sample16_mg_10ch:68: error: 'ARRAY' was not declared in this scope
UniPWM_Sample16_mg_10ch:68: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch:71: error: 'singleFlash' was not declared in this scope
UniPWM_Sample16_mg_10ch:72: error: 'fader' was not declared in this scope
UniPWM_Sample16_mg_10ch:73: error: 'beacon' was not declared in this scope
UniPWM_Sample16_mg_10ch:74: error: 'doubleFlash' was not declared in this scope
UniPWM_Sample16_mg_10ch:76: error: 'constOn' was not declared in this scope
UniPWM_Sample16_mg_10ch:79: error: 'constOff' was not declared in this scope
UniPWM_Sample16_mg_10ch:80: error: 'beamOff' was not declared in this scope
UniPWM_Sample16_mg_10ch:81: error: 'retract' was not declared in this scope
UniPWM_Sample16_mg_10ch:81: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch:92: error: 'mg' was not declared in this scope
UniPWM_Sample16_mg_10ch:94: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch:107: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch:115: error: 'dimmedOn' was not declared in this scope
UniPWM_Sample16_mg_10ch:120: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch:132: error: 'beamOn' was not declared in this scope
UniPWM_Sample16_mg_10ch:133: error: 'ascend' was not declared in this scope
UniPWM_Sample16_mg_10ch:133: error: 'UniPWMChannel' has not been declared
UniPWM_Sample16_mg_10ch.ino: In function 'void loop()':
UniPWM_Sample16_mg_10ch:152: error: 'ctrl' was not declared in this scope
UniPWM_Sample16_mg_10ch:154: error: 'ctrl' was not declared in this scope

kann mir von Euch jemand helfen?

Grüße aus Oberbayern,

Stefano
 
Fehler (meiner natürlich) gefunden

Fehler (meiner natürlich) gefunden

Die Libary war im falschen Verzeichnis.... jetzt passt alles...

tolle Sache!:)

Grüße aus Oberbayern,

Stefano
 
Ansicht hell / dunkel umschalten
Oben Unten