Archiv verlassen und diese Seite im Standarddesign anzeigen : I/O-, ADC- und DAC Erweiterung für RP6??? 3,3V und 5V!?
Hi allerseits,
nach dem meiner Meinung nach gelungenen Projekt "MultiIO (http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt)" wollte ich mal vorsichtig nachfragen, ob ein kleines weiteres Projekt eure Zustimmung finden würde:
Eine Erweiterung im üblichen RP6-Layout mit:
- ADC Porterweiterungen via I2C für 5V und für 3,3V
- DAC Porterweiterungen via I2C für 5V
- IO Porterweiterungen via I2C für 5V und 3,3V
- evtl Outputs mit größeren Treiber-Transistoren für höhere Verbraucher
- Evtl sogar 2-4 Relais? Für größere Schaltungen?
- wie auf der MultiIO einen einfachen Pegelwandler für I2C 3,3V <-> 5V
- evtl ein paar LEDs oder dergleichen.
eine erste sehr ungenaue Kostenüberlegung:
- Je IC-Baustein etwa 2 bis 5 Euro
- Kleinteile, Relais, Zubehör alles zusammen 10 Euro, je nachdem was man möchte
- Löten übernehme ich gerne für ein paar Euro
- Platine herstellen, übliches Layout. Schwarz mit weißem Druck, beidseitig bestückbar. Etwa 10-15 Euro bei 30 Abnehmern.
@Dirk: Interesse am Coden? :)
Grüße!
Fabian
@Dirk: Interesse am Coden? :)
Wenn du eine neue Hardware zimmerst: Immer! ;)
Super!
Hürde Nummer 1: check!!!
\\:D/
Tach jesacht, Ich nehme auch eine.
Gruß
Peter
TrainMen
28.07.2014, 08:57
Ein neues Projekt. Klar bin ich dabei wenn man mir die SMD Löterei abnimmt.
Ihr steht schon mal auf der Liste :D
Löten ist kein Thema.
Grüße
Hallo zusammen,
Ich wäre auch daran interessiert und würde gerne mithelfen.
Grüsse
Filou
hallo allerseits,
ist es - im weitesten sinne - etwas ähnliches wie das (http://rn-wissen.de/wiki/index.php/RP6v2_I2C-Portexpander#RP6v2_I2C-Portexpander:_Hardware) hier?
Jo, also, so prinzipiell, im weitesten Sinne, kann man sagen: Ja.
ABER:
Mit nochmal deutlich mehr zum Schalten und Walten. Ich dachte z.B. an einen 16fach IO-expander (https://cdn-reichelt.de/documents/datenblatt/A200/MCP23S17_MIC.pdf), wenigstens 4 ADCs (besser: 8 ) , evtl einen DAC (besser: 4 ) und dann eben noch so nette sachen wie 2 bis 4 solid-state-relais (am IO-expander dran) zum Schalten größerer Verbraucher.
Insgesamt soll es aber simpel gehalten werden, also maximal 4-5 Bausteine am I2C mit dazugehörigen Steckern. Einen 3,3V-Pegelwandler für I2C und wenn gewünscht noch ein paar LEDs. Das wars!
Grüße
also anschluss und schalten von hardware von der m32, bzw. der m256 aus? Mit einer verbindung über die zwei microcontroler miteinander über I2C kommunizieren (wie z.b. die RP6-base & die m32) hat es nix zu tun?
Hi!
Nein, das nicht. Der I2C ist ja ein Bus, an dem viele Teilnehmer hängen können.
Einer ist der Master (bei dir z.B. der M256) und alle anderen sind dann slaves (M32-Controller, Base-Controller, alle ICs auf dieser neuen platine, alle ICs auf der MultiIO).
Grüße
Ich überlege noch aber ich wäre evtl. interessiert.
Wunschliste wäre min. 8 bis 16 digital IO Ports, 4 bis 8 AD und 4 bis 8 DA Ports mit pcf Bausteinen in 5v Technik, sowie 8 transitorisierte Open Colector Schaltausgänge mit je einer Led welche anzeigen ob der Transistor schaltet (könnte man dann auch für bis zu 8 Relais nutzen), eine 3.3v Versorgung mit bis zu 1A und ein 3,3v tauglichen I2C umsetzer.
Per Optokoppler getrennte IO wären auch denkbar aber für mich eher kein Wunschlistenthema - wenn ihr 220v taugliche Solidstate Relais verwenden wollt, verwendet bitte schon aus sicherheitsgründen Optokoppler und beachtet bitte die VDE zum Thema Leiterplattenentwurf für solche Spannungen/Ströme. Ich persönlich halte ausdrücklichst garnichts davon, im Hobbybereich mit Spannungen über 24v zu arbeiten und für die üblichen 3-24v braucht man keine ST-Relais!
Jemand der unbedingt Starkstrom schalten will, sollte auf fertige Relaisboards zurückgreifen, die entsprechend designt und geprüft sind und zumindest ein ordentlichen Schutztrafo sein eigen nennen und bedienen können... ein Stromschlag aus der Steckdose ist nicht lustig!
Gruß
Yeah, der Ambivalente weiß, was er will :)
Danke dir, ich werde versuchen das alles zu berücksichtigen. Verwenden werde ich wohl "normale" Halbleiterrelais, auf keinen Fall was für über 30V! Macht keinen Sinn, dort kenne ich mich nicht mehr aus. Und das gilt (nehme ich einfach mal an) für die meisten Nutzer hier im RP6-Forum. Also schaffe ich da auch gar kein Angebot für so was :D
Ich dachte da an was vergleichbares zu diesem Ding hier bei Tinkerforge (https://www.tinkerforge.com/de/shop/bricklets/industrial-quad-relay-bricklet.html) das bei mir im Regal liegt.
Wie gesagt, ich habe alle deine Sachen auf der Liste. Einzige "sorge": nach erster kurzer Recherche habe ich gesehen, dass ADCs und DACs mit 8 Eingängen gleich mal relativ teuer werden können (deutlich über 5 Euro). Wenn da jemand was anderes weiß, bitte her damit. Allerdings sollten sie bei den "großen" Shops erhältlich sein, also C, Reichelt, Farnell, und vergleichbare. Irgendwas in China mit 6-12 Wochen Lieferzeit und horrenden Portokosten ist ja auch quatsch, denke ich.
Danke und Grüße
Frage A)
Könnte man für die geplante "analog-digitale Anschluss-Platine" auch noch bestimmte Sensoren vorsehen?
Beispiele:
- Spannungsüberwachung 3,3 und 5V
- Strommessung an Entnahmestellen
- Temperaturmessung an Leistungshalbleitern
Frage B)
Oder wäre auch eine I/O-Platine für ein (zusätzliches) "Thema" denkbar?
Beispiele:
- I/O-Platine, die auch 4 oder 6 Motoransteuerungen (mit Anschlüssen f. Spannungs-/Strom-/Drehimpulsgeber-Sensoren) enthält (Sinn: Option, ein anderes Einzelrad-Fahrwerk als das RP6-Chassis nutzen zu können)
- I/O-Platine, die auch eine Adapterplatine für Arduino Uno Addon-Boards ist
- I/O-Platine, die auch einen Kameraanschluss vorsieht (Bildbearbeitung über AVR µC)
Hi Dirk,
coole Ideen. Vor allem das mit der neuen Motoransteuerung und mit dem Adapter für Arduino!
Das mit der Arduino-Kompatibilität sollte man denke ich leicht hinbekommen. Alles andere muss ich mir erst mal überlegen, bevor ich dir da was genaues sagen kann. Ich wollte das Board klein, einfach und simpel halten. Aber ich überlege mir was.
Grüße
Frage B)
Oder wäre auch eine I/O-Platine für ein (zusätzliches) "Thema" denkbar?
Beispiele:
- I/O-Platine, die auch 4 oder 6 Motoransteuerungen (mit Anschlüssen f. Spannungs-/Strom-/Drehimpulsgeber-Sensoren) enthält (Sinn: Option, ein anderes Einzelrad-Fahrwerk als das RP6-Chassis nutzen zu können)
- I/O-Platine, die auch eine Adapterplatine für Arduino Uno Addon-Boards ist
da wäre ich sofort dabei!
kann man ganz grob den platzbedarf für z.b. RolfDs auflistung abschätzen? Wäre damit die standard-EXP-platine voll? Oder könnte sie kleiner sein (nur die 4 stecker für den RP6-bus und der raum dazwischen? Damit wäre auch noch - zumindest ein teil - die darunter liegenden platine zugänglich...
Da müsst ihr mir etwas Zeit geben :D
So schnell geht das noch nicht. Ich versuche mich mal an der Platine und gebe euch dann bescheid ;)
Hi fabqu:
Ich wollte das Board klein, einfach und simpel halten.
Was die Motorsteuerung angeht, könnte man wie beim RP6v2 die SP8M3 (http://media.digikey.com/pdf/Data%20Sheets/Rohm%20PDFs/SP8M3.pdf) vorsehen, die sind klein und enthalten schon 1/2 H-Brückenansteuerung mit 2 MOSFets (bis 4,5A).
Wenn man z.B. 8 leistungsfähigere Ausgangsports auf der neuen Platine haben will (s.o., z.B. von RolfD geschrieben), könnte man dafür 8 der SP8M3 vorsehen, die die 8 Ausgänge wahlweise nach High-Side oder Low-Side schalten können.
Je 2 SP8M3 zusammen bilden dann eine H-Brücke, so dass man damit schon 4 volle Motoransteuerungen hätte.
Super, gibts bei farnell und kosten 93Cent :D
-> ergo: ich bastel mal ein bisschen rum
Naja der 16 Bit Port ist mit einem PCF8575 oder 2 PCF8574(a) hin zu bekommen.
Der AD/DA Port wäre z.b. mit einem bis 2 PCF8591 möglich. Also 4x 16 beinige smds oder ggf statt 2 16ner ein 24er ...
Ein MAX oder AD chip wäre aber auch fein.. da kenn ich mich aber nicht mit den Gattungen aus.
Inka, das Adressjumperfeld und die Pfostensteckerleiste für meine Wunschliste ist größer als der eigentliche Chip-Bauteilplatzbedarf - befürchte ich. Mach dir da mal keine Sorgen... vielleicht kann man die Jumper wenigstens durch kleine Lötbrücken im RM 1,27 lösen. Spart bei 3 Brücken je Baustein bzw. bei 4 Chips dann auch schon fast 8 mm.
Und guckt euch zum Thema Transistorstufe mal den ULN2803 an... http://www.ti.com/lit/ds/symlink/uln2803a.pdf
Sowas gibts auch in anderen Leistungsklassen noch..
Hier noch die angesprochenen PCF Bausteine als PDFLink
http://www.nxp.com/documents/data_sheet/PCF8575.pdf
http://www.nxp.com/documents/data_sheet/PCF8574.pdf
http://www.nxp.com/documents/data_sheet/PCF8591.pdf
Es gibt noch nen paar mehr...
Übrigends.. auch diese Geschichten erfinden wir hier nicht zum ersten mal... http://www.mikrocontroller.net/articles/AVR_%C2%B5C-Board_und_Peripherie
Gruß
TrainMen
30.07.2014, 02:04
Ich hatte mir schon mal so ein Port Platine auf Lochraster gebaut 2 PCF8574 und 1 PCF8591 mit Jumperfeld. Nach erster Adressierung habe ich da nie wieder was geändert. Wenn was geändert wurde dann immer an den Chips die am Bus dazu kamen. Deswegen meiner Meinung nach könnten die auch mit fester Adresse gelötet werden. Das mit den Lötbrücken würde ich nicht so toll finden. Wenn, dann doch ein Jumperfeld.
Die Platine sollte aber schon die selben Maße haben wie die anderen Module, Ich würde noch nicht mal auf das Trapez verzichten wollen.
Die Wunschliste von RolfD entspricht eigentlich schon der Platine die ich mir vorstelle. Wenn die Transistorstufe mit den SP8M3 gelöst wird und die dann von anderen als H-Brücke für Motoren genutzt wird soll mir das egal sein . Hauptsache ich bekomme meine Outputs für höhere Verbraucher.
Hi!
Also bisher sind wir leider nur maximal sieben Interessenten... da lohnt sich das nicht, sonst wird die Platine so teuer wie die MultiIO (so 30 Euro nur die Platine). Warten wir mal ab, wie viele noch dazu stoßen.
Möglich sollten die meisten eurer Vorschläge/Wünsche auf jeden Fall sein. Aber bei unter 20 Interessenten brauchen wir glaube ich nicht anfangen.
Eine Frage an Dirk: Meintest du, ich solle einfach nur die Sp8M3 aufsetzen, oder die komplette Motorschaltung (Gatter davor, Treiber, Strommessung, etc) ? Letzteres wird hart zusammen mit allen anderen Wünschen umzusetzen... nur mal vom Platz her.
Grüße
TrainMen
31.07.2014, 14:29
Hi,
ich glaube auch nicht das da noch so viele dazu kommen, leider. Aber ich bleib dabei auch wenn sie so teuer wie die MultiIO wird.
hi,
hast Du mich schon mitgezählt? Ich wäre auch dann dabei wenn die karte wie die multiIO kosten würde....
zu den motortreibern - die wären mir schon wichtig. Wir haben ja zwei - auf der BASE. Falls, wirklich nur falls es platzmäßig eng werden sollte, würden nicht zwei vollständige zusätzlich reichen? Evtl. gibt es kompromismöglichkeiten bei den anderen optionen?
Thorben W
31.07.2014, 20:17
Ich wäre auch wieder dabei
mfg Thorben
@fabqu:
Nein, man braucht nicht die ganze Schaltung.
Man müsste nur sichern, dass nicht beide P- und N-Fets im SP8M3 gleichzeitig durchschalten.
Falls das zu aufwändig ist, könnte man das auch softwaremässig machen, aber weniger sicher.
Strommessung: Man kann darauf verzichten, aber kann dann Motorblockierungen nicht erkennen.
Ich kenn die Beschaltung vom SP8M3 nicht aber ich hab mal ne Verriegelung mit einem 74139 gesehen. Der NIBOBee hat sowas auch. Siehe dort Seite 2 unten.
http://download.nicai-systems.com/nibo/nibobee_schematic_1_14.pdf
Aber es gibt meines Wissens auch komplette vollintegrierte Motortreiber.
Gruß
Hi!
Also was ich mal so zusammen gezaubert habe:
1. ein 16fach PWM wie auf dem MultiIO schaltet vier LEDs (über Jumper, also auch anders verwendbar), sowie 4 SP8M3, vier PWMs sind frei und auf Pins rausgeführt. 2 Adressen Jumperbar.
Die SP8M3-Ausgänge sind auf einen 10fach Wannenstecker rausgeführt, zuzüglich Batteriespannung und GND (beides aus dem XBUS) .
2. Zwei PCF8591 bringen insgesamt 8 ADCs und zwei DACs. ADCs sind mit +5V (aus XBUS) und GND auf einem Wannenstecker. DACs sind einfach auf Pins rausgeführt. Je 2 Adressen Jumperbar.
3. Ein PCF8575 bringt 16 IOs auf 5V-Level, je 8 zusammen mit +5V und GND auf einen Wannenstecker rausgeführt. 2 Adressen Jumperbar.
4. Arduino aufsteckbar. Verbunden sind I2C, GND und +5V vom XBUS. Die Digital- und Analog-Pins sind auf leere Pins rausgeführt.
5. URBUS ist vorhanden, nicht verwendet. Steht also zur freien Verfügung.
6. 3,3V-Regler für bis zu 1.5A. espeist von +5V aus XBUS und durch Jumper deaktivierbar. Wäre hier Batteriespannung besser?
7. 3,3V-I2C-Pegelwandler. Auf Pins je zweimal rausgeführt: 3,3V, GND, I2C(3V3)
Was ich noch gar nicht habe sind die Relais an den 4 übrigen PWMs, wobei ich mir da auch noch nicht ganz sicher bin wie ich das mache. Auch einen IO-Expander auf 3,3V wäre denke ich nett.
Könnte mal Schaltpläne hochladen, wenn jemand will.
Grüße
Hi,
Hi!
6. 3,3V-Regler für bis zu 1.5A. espeist von +5V aus XBUS und durch Jumper deaktivierbar. Wäre hier Batteriespannung besser?
Könnte mal Schaltpläne hochladen, wenn jemand will.
Zu 6, da die 5 V erst auf dem RP6 aus der Batterie erzeugt werden müssten, macht es wenig Sinn, diese bei 1,5A noch mal auf 3,3v zu wandeln. (was eh so nicht funktioniert weil der RP6 selbst ja auch Strom braucht - da wird also nur der 5v Regler heiß und es kommen nur bestenfalls 1A bei 3,3v auf dem Board an... Besser direkt aus der Batterie ziehen, das entlastet dann auch den 5V Regler auf dem RP6. Zudem ist dann auch der Wirkungsgrad besser weil jede Wandlung ca. 30 - 40% Wärme abführt.
Zu Pläne, JA ich will! :)
Ansonsten klingt das schon mal alles sehr gut!
Kann man die Ports vom Arduino Prozessorboard (was wir ja erst mal nicht haben) am Shild ggf. mit einem PCF8574 emulieren so das man Erweiterungsboards steuern kann? Das wäre dann zumindest eine Möglichkeit, die anderen ShildPins zu steuern, auch wenn das dann nicht so fix geht wie wenn da ein CPU Board direkt dran sitzt. Oder vielleicht (feste/jumperbare) Verbindungen zum PCF8575 einplanen?
In der aktuellen Konstellation müsste man ja zumindest ein weiteres Arduino CPU Board aufgesteckt haben, welches über i2C mit dem RP6 redet, aber sonst eigene Shilds steuert. Geht zwar auch.... bzw. wäre absolut ok... aber es müsste alternativ wie beschrieben auch mit dem Portemulatorbaustein und ohne CPU Board gehen, aufgesteckte Shilds zu steuern.
Also egal wie es da weiter geht, ich geb auch mal ne Kauf-Zusage für 2 Boards. Das klingt alles einfach gut.
Gruß
Servus!
Das mit Punkt 6 ist schon erledigt, war ne doofe Überlegung. Klar macht das so keinen Sinn.
Außerdem habe ich erst mal noch den gesamten schon bekannten Akku-Part vom Multi-IO übernommen, sodass man mit zwei Jumpern wählen kann:
1.) Will man die Akkus des RP6 über den XBUS benutzen oder einen eigenen angesteckt lassen?
2.) Will man einen eigenen 5V-Regler nutzen, oder den vom RP6 über den XBUS mitbenutzen?
Gefällt euch das? Kostet leider das gesamte obere rechte Eck des Boards, wie auch beim MultiIO, aber ich halte es für sinnvoll. Wenn nicht gewollt, sagt bescheid. Bis jetzt hat eh jeder, der sich hier für ein Board interessiert hat, auch ein MultiIO.
Wie du das mit dem Arduino genau meinst, weiß ich grade nicht.
Bisher läuft es so: Arduinos können ja nur "von unten" aufgesteckt werden, da alle Arduinos Buchsen haben, keine Pins.
Diese sind nun auf diesem neuen Board lediglich mit vier Leitungen des XBUS verbunden: GND, +5V, SDA und SCL vom I2C.
Weitere Digital- und Analogpins (sog. D0-D13 und A0-A5) sind einfach auf Pfostenleisten rausgeführt. Wenn ich dich richtig verstehe, soll ich einen 2C-IO-Expander an zumindest die digitalen Pins D0 bis D7 hängen!? Wozu? Du möchtest dann mit dem Expander quasi simulieren, dass ein langsamer Kern an den Pins hängt?
Könnte gehen. Ich versuche es gerne!
Wie kommt denn ein 3,3V-IO-Expander fürn I2C an?
Pläne lade ich demnächst in die Dropbox und stelle hier einen Link online. Oder ich fange gleich mal mit ner Doku im RN-W an.
Ach noch eine Frage: Habe die H-Brücken nun an GND bzw. Batteriespannung gehängt, wie es auch beim RP6V2 ist. Soll ich das wählbar machen für wahlweise +5V oder +UBat?
Grüße
So weit ich gesehen habe, werden Shilds (Erweiterungen) oben drauf gesteckt. Siehe z.B. dort: http://1.bp.blogspot.com/-F9xWHnZyPHg/UPm_mxwFN0I/AAAAAAAAABk/QkUJuWlhcZg/s1600/WirelessGyroShieldStack.JPG
Die Shilds haben dazu Steckerfassungen mit durchgestecktem langem verlötbaren Stift.
Die Arduinos (CPU) selbst haben "ab Werk" nur ein Stiftesockel. Man kann sich aber dort ggf. ebenfalls Steckerfassungen mit langem verlötbaren Stift rein setzen. Dann ist auch ein anfügen von Shilds "nach unten" sowie auch das verketten mehrerer CPU-Boards .. grundsätzlich möglich.
Daraus ergibt sich die Kombination a:
Man setzt ein Shild (Erweiterung) auf dein Board... bedeutet aber ggf. das man zusätzlich die IOs irgendwie noch bedienen müsste... daher mein Vorschlag die IOs über ein PCF schaltbar zu machen.. so wie du sagtest.. ist das dann für das Shield wie ein langsamer Arduino-Kern. Ich nenne diesen Modus mal Arduino-Emulation.
ebenfalls die Kombination b:
Man setzt ein Arduino-CPU-Board auf dein Board auf ... Vorraussetzung wäre hardwareseitig, das das Arduino Cpu Board ähnlich wie die Arduino Shilds lange Beinchen hat. Dann darf auch nur die Versorgung und i2C verbunden werden, dein Board bzw. der RP6 und Arduino können via i2c miteinander quatschen.... man muss nru aufpassen wegen der i2c Adressen.
ebenfalls die Kombination c als Erweiterung von b:
Auf dem aufgesteckten Arduino CPU Board könnte man oben drauf weitere Shilds aufstecken, die von der Arduino cpu Modul gesteuert werden. Sonst gleich mit b.
Das ganze unter der Voraussetzung, das das Aufstecktürmchen aus Shields "nach oben" .. also in die Höhe wächst.
Würde man es "nach unten" wachsen lassen, würden die Shields recht schnell mit den darunter liegenden RP6 Boards kolidieren.
Dein Board muss sich also für aufsteckbare Shields entweder wie ein CPU -Board verhalten... incl. io Leitungen.... oder du adaptierst ein Arduino cpu Board und DAS steuert dann die Shields wobei dann nur noch i2c verbunden sein sollte. Das CPU Board muss man sich dann selbst frickeln oder direkt ein passendes besorgen. Ein Shield-Board nur über i2c ansteuern wird selten klappen, fürchte ich.
Ich würde es bevorzugen wenn beide Varianten incl. c gehen würden... und man sich das selbst jumpern kann. Allerdings und eben weil... man kann nicht alle Funktionen des Arduino emulieren.
Die H-Brücke an UBat finde ich ok, an 5 V gehört niemals überhaupt nicht und gar keine H-Brücke!!!!! Schon deshalb nicht weil sonst Induktionsspitzen (Gegen-EMK) auf die 5V Leitung einstreuen. AUsserdem was soll den für den Motor übrig bleiben wenn die Abfallspannung pro Transistor schon 0,7V und mehr ist? 5v-1,4v macht grade mal eine nutzbare Spannung von 3,6v ... das langt bestenfalls fürn Mini Solarmotörchen...
Gruß
Hallo Inka,
Arduino aufsteckbar. Verbunden sind I2C, GND und +5V vom XBUS.
würde das im prinzip nicht reichen?
Kommt drauf an wo für... so kann man weder Shieldboards vom RP6 aus ansteuern noch CPU-Boards mit Shilds nutzen wenn ich das richtig sehe. Da frag ich mich dann.. wo zu eine Schnittstelle die nichts kann? Also weg mit dem Arduino Sockel! Ein Arduino CPU Board kannst du nicht "richtig rum" auf ein RP6 Board setzen.
Und zum Thema "seeehhhrr aufwändig - und teuer" ... ein Satz lange Steckerleisten kosten ein paar Cent... das Problem dürfte eher sein, industriell verlötete Steckerbeinchen raus zu puhlen und zu ersetzen. Aber auch das kann man umgehen wenn man einfach ein kurzen Satz Beinchen unten gegen lötet und sich nicht ganz ungeschickt anstellt. Aber wie schon gesagt... ein Stecker der weder das eine noch das andere kann ist unfug. Dann löte ich mir sowas lieber selbst und weis das es klappt.
Überleg doch mal bitte erst, wie rum man ein Arduino CPU Board an ein rp6 Board stecken würde...und ob bzw. auf welche Seite man dann noch Shields aufstecken kann... das geht imho nur wenn man die CPU drunter steckt.. also quasi das rp6 Board selbst schon ein Shield ist (mit entsprechenden Platzproblemen) ODER man aus dem CPU-Board selbst ein Shieldboard macht zumindest was die Pins angeht.
Gruß
Hi!
jo, ich verstehe absolut was gemeint ist.
nur kenne ich mich leider mit arduino nicht besonders aus, ich kenne nur den uno, das ethernet und den arduino mini pro, alles keine adäquaten Beispiele um hier eine lösung zu finden.
mein Vorschlag: ich lese mich erst mal ein, was es so als shield gibt, damit ich mal eine idee dafür bekomme, was benötigt wird. Und dann nehme ich evtl noch einen 8- oder 16bit io expander mit rein und hänge den an die digital-io-pins der shield-aufnahme. Dann kann man sowohl boards unten an diese platine klatschen, als auch shields oben drauf oder sogar beides.
@arduino-freunde: dann darf ich aber gnd und i2c ohne jumper verbinden, und ubat jumperbar? Sonst wird dann nichts mehr benötigt?
das mit der eigenen stromversorgung: bleibt einfach mal drinnen, bis wir uns dagegen entscheiden aus platzgründen. Momentan habe ich noch ein paar anbauflächen für eine kleine ic-käfer-farm frei :)
Ich denke, ein Arduino Uno ist als CPU Board eine sinnvolle Basis, ebenso wie die vielen Shields dieser Größe.
Es gibt zwar auch Arduinos mit noch mal extra Anschlüssen wie der
http://www.amazon.de/SainSmart-Mega2560-ATmega2560-ATMEGA8U2-cable/dp/B00FLL8OZG/ref=sr_1_14?ie=UTF8&qid=1407179728&sr=8-14&keywords=arduino
aber selbst da passen die kleinen Shields drauf - wovon es reichlich und für alle Anforderungen gibt.
Sowas z.B. ... zum Thema vollintegrierter Motortreiber...
http://www.amazon.de/Arduino-Motor-Shield-Smart-Projects/dp/3645651896/ref=sr_1_4?ie=UTF8&qid=1407179591&sr=8-4&keywords=arduino+motor
Das mit den gnd/5v und i2c fest verdrahten ist ok.
Ich melde übrgends noch Bedarf für ein drittes Board an... allerdings ist das noch nicht sicher.
Ich glaube, das rp6 Board selbst als Art Shield auszulegen (auch wenn dann der Arduino platzmäßig drunter muss) und nur die i2c anzuzapfen scheint mir doch die bessere Lösung - vorausgesetzt das klappt dann mit den Bohrungen für die Abstandsbolzen des RP6. Zur Not müssen dann halt längere drunter - aber man bekommt alle Arduino shields angesprochen und die Arduino cpu könnte als i2c-slave laufen. Die Lösung mit den emulierten Ports wäre als Alternative schön, aber nach reiflich nachdenken nur 2.te Wahl. Wenn die alternativ emulierte Ansteuerung zulasten anderer Funktionen geht, lass sie weg. Wichtiger wäre ein funktionierendes slave-cpu-board welches die arduino ports selbst steuert.
Gruß
Hi,
die Frage stellt sich wirklich:
a) Wollen wir eine Arduino Uno Platine auf den RP6 setzen (und den RP6 dann z.B. damit steuern) ODER
b) Wollen wir Arduino Addon-Boards da drauf setzen?
Zu a)
Die Arduino Prozessor-Platinen können eigentlich nicht irgendwo drauf gesetzt werden, sondern nur selbst als Basis von Addon-Boards dienen. Man könnte sie aber "kopfüber" auf verlängerte Stiftleisten setzen.
Zu b)
Wenn man Addon-Boards auf den RP6 setzen will, dann übernimmt der RP6 (oder I2C-Bausteine da drauf) die Ansteuerung des Addon-Boards in Vertretung des Arduino (Uno).
D.h.: Man muss neben 3,3 und 5V auch I/O-Ports ("normale" und PWM-geeignete) und ADC-Ports an die richtigen Pins des "Sockels" für die Addon-Boards führen. Wenn definitiv fest steht, wie man das verdrahtet, kann man eine Art "Arduino-Simulation-Libs" für unsere neue "MultiIO" schreiben, die je nach aufgesetztem Addon-Board dieses ansteuern.
Wie weit man den Sockel hardwaremäßig "treibt" (z.B. auch mit den 6 ISP-Stiften) muss man schauen.
Sicher kriegt man das ganze auch nicht so hin, dass ALLE Addon-Boards des Arduino-Systems zum Laufen zu bringen sind. Insbesondere die 3,3V- und 5V-Kompatibilität wird Probleme machen.
Zum Thema "Relais":
Braucht man die wirklich?
@Dirk,
das Problem dabei ist, das z.B. einige Funktionen des ARDUINO CPU Boards / Stecksockels eben nicht über PCF Bausteine nachbaubar sind.
Die Frage ist letztlich, reicht eine Portemulation ala PCF um damit die meisten Shields ansteuern zu können oder funktionieren dann nur ein paar wenige weil z.B. AD/DA Leitungen, PWM oder IRQs nicht vernünftig nachbaubar sind.
Wie gesagt würde das ARDUINO CPU Board als I2C Slave arbeiten, könnte die ARDUINO CPU das Arduino Sockelsystem pinweise autark, aber auf Weisung via I2C des RP6 steuern. Natürlich geht das auch anders rum.. je nach dem wer Master und wer Slave ist.
Ich meine, man kann die relais auf dem RP6 Board raus lassen zumal es genau die z.B. auch für den Arduino Bus schon gibt.
Gruß
Hey,
ja, ich habe mir mal die Shields und Boards angesehen. Da gibt es schon eine ganze Menge, das wäre denke ich hart, da einzelne Libs zu entwickeln.
Aber zu a)
das Prozessor Board könnte man ja auch von unten anstecken. Dann kann man es mit dem RP6 als neues Hirn verwenden, da es ja über I2C kommunizieren kann.
Zu b)
Ich bin mir noch nicht sicher, wie viel Sinn das macht. Wenn ich nun z.B. einen weiteren 4Ch-ADC an A0 bis A3 (A4 und A5 sind dann tot bzw nur auf Pins tot rausgeführt) und einen IO-Expander an D0 bis D13 hänge, dann könnte man quasi einige Shields anhängen und verwenden. Wird etwas frickelig, aber sicher machbar.
Damit man dann dennoch Version a) nehmen kann (also auch diese Platine wie ein Shield auf ein Board setzen kann) sollten diese IOs und ADCs Jumperbar sein. Dann wäre das Arduino-Board nur via 5V, GND und I2C mit der Platine verbunden, und auch ein Arduino-Board könnte unsere I2C-Erweiterungen (IOs, PWMs, H-Brücken, ADCs und DACs) verwenden. Außerdem kann man dann das Rad schlagen vom Arduino über diese Platine zur MultiIO :D
Nur mal so als Gedanken.
Muss ich mir eigentlich über Vin und 3,3V an den Arduinos gedanken machen? Die kann ich doch einfach tot lassen, wenn ich die Arduinos aus den Boardeigenen +5V speise. Oder sollte ich stattdessen lieber die Batteriespannung auf Vin (jumperbar) legen?
Relais lasse ich mal raus denke ich. Mal sehen. Stehen auf der ToDo weiter unten ;)
Grüße und gute Nacht. Morgen wird weitergetüftelt.
Ich finds übrigends äusserst unschön, das Inka seinen Beitrag (lag zwischen dem aktuellen Beitrag 31 und 32 auf den ich mich in Beitrag 32 auch bezog) einfach sang und klanglos gelöscht hat! Ich hätte den ganzen Beitrag quoten sollen und nicht nur eine Zeile... oder mich an meinen ursprünglichen Vorsatz aus älteren Zankereien mit ihm halten sollen, Ihn komplett zu ignorieren! Unter aller Sau sag ich dazu! Aber das nur nebenbei...
Gruß
TrainMen
05.08.2014, 01:21
Hi,
4 SP8M3 zum Schalten meiner Verbraucher, erwähnt hast Du nicht die LEDs die mir das Schalten anzeigen.
Die Akku-Part find ich so in Ordnung.
Arduinokram brauch ich nicht, ist mir deshalb egal was da kommt .
@RolfD
Ich wunderte mich schon was Du da zitierst. Ich fand die Aussage von Inka gar nicht.
Aber wenn er sie gelöscht hat ist das klar. Vielleicht war das keine Absicht oder nicht sein verschulden. Ein Beitrag von dir war ja auch mal verschwunden und wurde von Dirk gerettet.
@RolfD
Ja, das ist das Hauptproblem.
Wahrscheinlich werden viele Addon Bords nicht mit den "langsamen" PCF IO Ports klar kommen. Damit scheitert im Grunde auch der Versuch einer "Arduino Emulation".
Hmm, eine weitere möglichkeit wäre, zumindest einige der Arduino-Leitungen auf den USRBUS zu legen und dort dann mit den IOs der einzelnen Prozessoren zu verdrahten.
Auf der anderen Seite habe ich aus der MultiIO gelernt, das dieses viele Rumgejumpere eher zur totalen Verwirrung führt, vor allem bei denen, die nicht so sehr wie wir hier mitdiskutieren. Daher wollte ich das deutlich runterschrauben bei dieser Platine hier.
@Trainmen: wird eingeplant :)
Grüße
also gelöscht habe ich bewusst nichts. Bin nach wie vor an einer platine interessiert, werde mich aber mit kommentaren zurückhalten, auch den letzten nicht kommentieren...
TrainMen
05.08.2014, 13:37
Ich finde dieses Rumgejumpere eher vorteilhaft. Ich kann so Komponenten je nach Bedarf zu oder abschalten. Warum soll mein Robot mit was befassen was ich nicht brauche, kostet nur Ressourcen.
Man muß sich eben mit der Platine beschäftigen dann kennt man auch die Jumper.
Hi fabqu & TrainMen:
habe ich aus der MultiIO gelernt, das dieses viele Rumgejumpere eher zur totalen Verwirrung führt, vor allem bei denen, die nicht so sehr wie wir hier mitdiskutieren.
Ich finde dieses Rumgejumpere eher vorteilhaft.
Leute,
ein einfaches Pro & Contra Jumper würde der Sache -denke ich- nicht gerecht.
Wie finde ...
SINNVOLL ->
- Jumper zum Akti-(Deakti-)vieren von (nicht gebrauchten oder Strom-fressenden) Funktionen inkl. ihrer Stromversorgung
- Jumper zur (I2C-)Adressenanpassung (um Adress-Doppelungen im System zu verhindern oder mehrere identische I2C-Bausteine am selben Bus zu nutzen)
- Jumper zur Auswahl der Haupt-Stromversorgungs-Variante
- ...
WENIGER SINNVOLL ->
- Jumper zum Verteilen von zu wenigen I/O-Ports auf zu viele fest installierte Funktionen
- Jumper da, wo es auch Steckverbindungen gibt
- Jumper, um eine Platine allzu "universell" und für zu viele Anwendungsfälle auszulegen
- ...
Bei der MultiIO fand ich gut, dass alle RP6-Prozessor-Platinen (Base, M32, M128, M256 WiFi) durch entsprechende Jumperung nahezu gleich gut nutzbar waren.
Wenn wir es jetzt mit einer rein über I2C gekoppelten Platine zu tun haben (d.h. OHNE Nutzung von I/O- und ADC-Ports der RP6-Prozessor-Platinen), braucht man diese Anpassung sicher nicht, ABER:
Man braucht eine gejumperte INT-Verteilung (INT1..3, INTU) über den XBUS, damit alle RP6-uC-Platinen auch über INT auf rasche Anfragen einzelner I2C-Bausteine auf der neuen Platine reagieren können.
[Anmerkung: Unabhängig von der Jumperei fände ich es weiterhin gut, wenn alle RP6-Prozessor-Platinen (s.o.) wieder nutzbar wären.]
Also:
Jumper ja, wenn es die Funktion erfordert, und nur da, wo man ein Bauteil nicht sowieso durch einen Stecker abtrennen kann.
- - - Aktualisiert - - -
@RolfD:
Die Frage ist letztlich, reicht eine Portemulation ala PCF um damit die meisten Shields ansteuern zu können oder funktionieren dann nur ein paar wenige weil z.B. AD/DA Leitungen, PWM oder IRQs nicht vernünftig nachbaubar sind.
Ja, das sehe ich auch als Hauptfrage.
Wenn ich mich (als Hardware-Entwickler) damit beschäftigen müßte (da beneide ich fabqu eher nicht), würde ich mir nicht die zig Shields ansehen, die es für Arduino gibt, sondern ich würde mir die Verbindungen des ATMega 328P mit dem Arduino-Sockel auflisten. Dabei wäre bei den ADCs wohl nur wichtig, Differenz-Eingänge richtig anzuordnen. Bei den I/O-Ports wären die "Sonderfunktionen" (Interrupt-fähig, serieller Port, ICP, PWM, ...) zu beachten.
Wenn man die Pin-Funktionen des Arduino-uC-328P möglichst gut am richtigen Sockel-Pin "kopiert", d.h. eine möglichst identische Pin-Funktion des RP6-Prozessors sucht, dann müßten die allermeisten Shields zu betreiben sein. Im Idealfall sogar alle, wenn man das 3,3V/5V "Problem" löst und spezielle Addon-Boards (mit ISP-Verbindung ...) nicht berücksichtigt.
Was die Zahl der möglichen Shields stark reduziert, wäre eine I/O-Port "Emulation" durch einen I2C-Portexpander. Eingeschränkt gilt das evtl. auch für ADC-Ports.
[Randbemerkung: Wenn wir das so machen würden, bekäme man wieder das "Multi-Jumper-Problem" der MultiIO: Wenn man die Base, M32, M128 und M256 WiFi nutzen will, geht das zwecks Anpassung an den Arduino-Sockel nur mit unterschiedlichen Konfigurationen!]
TrainMen
05.08.2014, 16:21
@Dirk
Also ein Pro oder Contra Jumper sehe ich hier nicht.
Da wo notwendig kommen sie eben hin und das werden wieder viele sein.
Wer will den einen Jumper zum Einschalten eine Baugruppe wenn die Baugruppe garnicht angeschlossen ist ? Hä :confused:
Die Jumperei auf der MultiIO ist doch nur deshalb so umfangreich wegen den vielen Adresspins und der flexibilität mit allen 4
RP6-Prozessor-Platinen und die neue I2C Platine wird nicht viel anders aussehen. Ich sammle schon fleissig bunte Jumper.
Legt doch einfach zusätzlich zu 5v/gnd/i2c die gesteuerten IO Leitungen (Nicht die AD/DA, nur IO) der PCFs ohne Jumper sinnvoll auf den Arduino Sockel. Das spart jede Menge Platz der Jumper und Sockelleisten. Was kann passieren?
Version 1 ohne Arduino:
Die Leute, die nur die PCF Leitungen nutzen wollen, können am Arduino Sockel die Leitungen einfach abgreifen. Es gibt übrigends auch für das Arduino System EX-Platten zum selbst aufbauen... siehe Version 2.
Version 2 mit Arduino Shieldboard:
Die Leute, die PCF Leitungen als Emulation nutzen wollen, können ein Shield aufstecken und die PCF als Steuerleitung zumindest für die normalen Portfunktionen nutzen... also Arduino Relaisboards... Displays Usw usw usw...
Version 3 mit Arduino CPUboard (+evtl weitere Shields):
Die Leute, die PCF Leitungen in dem Fall NICHT nutzen wollen/können, schalten in den PCFs die Leitungen auf Eingang/Hochohmig. damit sind die PCFs für den Busverkehr auf dem Arduino Bus/Sockel nicht mehr relevant. Dafür kann aber der Arduino jetzt alle Leitungen steuern.
Version 4 mit Arduino CPUboard (+evtl weitere Shields) als erweiterte Version 3:
Es wäre sogar möglich, nur einige Leitungen vom PCF und einige Leitungen vom Arduino als Ausgang zu nutzen.. so das sogar beide Systeme koexistent arbeiten - ob das Sinn macht, liegt sicherlich auch an den Erweiterungen des RP6 Boards sowie der verwendeten Shields.
Vielleicht sollte man den RP6-Erweiterungsteil .. was auch immer da geplant war (z.B. ST-Relais) zur freien Bestückung lassen.
Man braucht letztlich nicht mal einen Jumper für das Ganze.. man muss nur ZWINGEND dafür sorgen, das die Arduino CPU und die PCFs nicht gleichzeitig auf dem Bus als Output arbeiten. Ganz einfach....wer dann allerdings seine Boards falsch proggt, zersemmelt mit großer Sicherheit seine PCF-Ports, den Arduino und mit Pech auch seine Shields... aber gehen täte das so.. also vielleicht baut man statt der Jumper einfach 470ohm Widerstände ein... dann knallen die Gater nicht ganz so schnell durch wenn sie gegeneinander treiben. Das Ganze betrifft wie gesagt jedoch nicht den AD/DA Teil der Schaltung.
Ich habe allerdings große Zweifel, das Leute die ein Jumperfeld intellektuell nicht bewältigen, es hinbekommen den richtigen Code zu bauen...
Wobei die Variante mit Jumpern dann wäre.. Jumper offen wenn Arduino CPU drauf, Jumper geschlossen wenn keine Arduino CPU drauf... echt schwierig zu handhaben... vielleicht reicht aber schon ein einzelener Jumper am 5v Pfad des 16-Port PCF. Ist zwar keine schöne Lösung aber 1 einzelner Jumper sollte bewerkstelligbar sein...
Gruß
Hi!
So klingt das doch vernünftig. So werde ichs versuchen.
Hier wäre mal der erste "Bauplan" zu finden:
https://www.dropbox.com/s/1rcqjtm40wceqzh/RP6_ADC-IO-DAC_sch.pdf
Momentan verbaut:
- Zwei 4Ch-ADCs mit je 1Ch-DAC (Adressen A0 und A1 je jumperbar)
- ein 16fach PWM (wie auf MultiIO, A0 und A1 jumperbar), an dem jumperbar 4 LEDs, 4 halbe H-Brücken (SP8M3, siehe RP6v2) und vier freie Pins hängen. An jedem MOSFET der H-Brücken hängt auch eine LED (gefällt mir zwar grade nicht so, aber mal sehen ob man hier noch optimieren kann)
- ein 16fach IO-Expander auf 5V (A1 und A2 jumperbar)
- ein 16fach IO-Expander auf 3,3V (A1 und A2 jumperbar)
- Eigene Stromversorgung möglich, jumperbar aber auch RP6-Stromversorgung über XBUS nutzbar
- eigener 5V-Regler, jumperbaraber auch RP6-5V über XBUS nutzbar
- eigener jumperbarer 3,3V-Regler (min. 1A)
- Pegelwandler I2C 5V<->3,3V
- Extrapins je für 5V- und 3,3V- I2C
- USBRUS
- Alle IOs und ADCs sind auf 10pin-Wannensteckern herausgeführt
Viele Grüße,
Fabian
Thorben W
06.08.2014, 13:21
@fabqu: Können die Wannenstecker für die SP8M3 den bis 4,5A?
Gruß
Thorbe W
Nennstrom sind 3A, aber das sollte denke ich reichen. Wenn man wirklich mehr will wird es schwierig, steckverbinder zu finden...
So, das Jumperschlachtfeld ist ausgehoben :D
https://www.dropbox.com/s/1rcqjtm40wceqzh/RP6_ADC-IO-DAC_sch.pdf
Anmerkungen bitte an mich. Ich habe noch einen 16fach IO-Expander hinzugefügt, jumperbar ist er mit allen 14 Digitalen IOs des Arduino verbunden sowie jumperbar mit A4 und A5 vom Arduino. An A0 bis A4 des Arduino hängt - ebenfalls jumperbar - noch ein AD-Wandler, dessen dann noch freier DA-Port auf einen Pin herausgeführt ist. ich stelle gerade mal die Kosten zusammen, damit ihr mal eine Vorstellung habt.
Nur die ganzen ICs zusammen (3x 16fach IO, 3x AD/DA, 4x SP8M3, 1x 16fach PWM, 3V3-Regler, 5V-Regler) kommen so auf etwa 21,45. Dazu kommen Kleinteile (14 LEDs SMD-0805, 16 Widerstände SMD-0805, 1 Diode, 6x Kondensatoren 100nF SMD-0805, 5x Kondensatoren 10uF SMD, ein Transistor BSN20 für den I2C, 4x Steckerwannen 10-pin, 6x Steckerwanne 10-pin, viele viele Pins/Jumper).
Die ganzen SMD-Teile (ICs und Kleinteile) kann ich gerne wieder gesammelt bestellen. Kosten dafür muss ich noch genau checken. Auch einlöten von ICs und/oder SMD-Kleinteilen übernehme ich gerne. Sagen wir wie bei der Multi-IO fürs IC Einlöten 8 Euro, für die Kleinteile 5 Euro? Einverstanden?
Die Platine herstellen lassen wird wohl etwa 21 Euro kosten. Wenn sich noch mehr freiwillige melden, natürlich auch weniger. Momentan habe ich 10 Bestellungen, wobei ich da schon selbst 3 Stück nehme :D
Grüße
Wie gesagt - 2 gelötete, aufgebaute und geprüfte Boards bestell ich, ein drittes (vielleicht ohne die SP8M3) evtl. noch als Nachzügler später - das sag ich aber noch mal an. Wenn Du soweit bist, schreib mir per PN deine Kontendaten und die Komplettsumme, ich geb dir dann meine Adresse. Bis 70 € pro Board hast du meine Freigabe, wenns teurer wird will ich Rücksprache.
Als Sonderwunsch: Bitte bestücke meine Boards beide mit langen Stiftleisten so das ich ein Arduino CPU Board "von Unten" aufstecken kann - das RP6 Board also quasi als Shieldboard auf den Arduino aufgesteckt wird.
Ich hab sonst nichts zu meckern. :)
Gruß
Cool!
Den Sonderwunsch erfülle ich gerne, würde das sowieso eigentlich jedem raten bei dem dann die langen Beinchen nicht stören. ich denke mal du meinst solche hier (http://www.amazon.de/Prototyping-Connectors-PRT-10007-Stapelbar-Header-Kit/dp/B004RASBVY/ref=sr_1_1?ie=UTF8&qid=1407414609&sr=8-1&keywords=arduino+pin+header) !?
Weiß jemand, wo man diese Arduino-artigen Buchsen-Pins herbekommt? Bei Amazon, aber dann nur sau teuer für so einfache Pins...
Grüße
TrainMen
07.08.2014, 14:47
Hi fabqu,
Das ließt sich alles sehr gut, Sammelbestellung und Preise sind OK.
Die Stromversorgung ist also komplett Identisch mit der von der MultiIO ? Auch die 4 Pins zwischen Sicherung und Microschalter ?
Welche LED Farben hast Du für die MOSFET-LEDs angedacht ?. Ich würde 8x Grün bevorzugen und 4x Gelb für die PWM sowie 2x Rot für die Stromregler.
Ich lese gerade die Post von RolfD. Geprüfte Platine ? Machst Du die Platinen komplett fertig ?
Also wie ich gelesen habe:
Auch einlöten von ICs und/oder SMD-Kleinteilen übernehme ich gerne. Sagen wir wie bei der Multi-IO fürs IC Einlöten 8 Euro, für die Kleinteile 5 Euro?
Kann man sich sein Board auch komplett von Fabian zusammen löten lassen. Kostet halt bissel aber das isses mir Wert da ich SMDs nicht gut gelötet bekomme. Mit geprüft meine ich, keine sichtbaren Kurzschlüsse usw... die Lib dafür muss ja auch erst gebaut werden und erst dann kann man alle Funktionen auf Herz und Nieren testen.
@Fabian
Wegen der 5V am Arduino Sockel, es gibt wohl Shields für 3,3V und für 5V sowie CPU Boards die selbst 3,3v oder 5v liefern.
Es wäre praktisch wenn du zumindest die Versorgung des Sockels jumpern könntest. Also 3,3v/5v/frei .. weil wenn ein CPU Board angesteckt ist, versorgt das Board normal den Bus je nach dem welches Board man hat - dann muss der Jumper frei sein. Hat man nur ein 5v oder 3,3V Shield, müsste halt entweder 3,3v oder 5v jumperbar sein.
Ist ja nur ein Jumper mit 3 Pins nötig dafür.
Bei ARM LPC2138 Prozessoren kann man meines Wissens 3,3v und 5v Technologie auch mischen - zumindest am i2c Bus.. wie das z.B. mit dem Arduino DUE ausschaut, weis ich nicht genau. http://www.amazon.de/SainSmart-SAM3X8E-Cortex-M3-MEGA2560-Duemilanove/dp/B00G6D4NIK/ref=sr_1_1?ie=UTF8&qid=1407446994&sr=8-1&keywords=arduino+due
Aber ich denke, das man gut gewappnet ist wenn man die Versorgung umschaltbar macht.
Aso ja die Leisten meine ich.. ich denk mal die gibts beim C als Meterware...
Eine Entwicklungsumgebung für Arduino (Alle Plattformen) gibts übrigends als Plugin auch für das aktuelle Atmel Studio 6.2 - demnächst steht also nichts mehr im Weg, Arduino und RP6 zu verheiraten :D
Gruß
TrainMen
08.08.2014, 01:52
Ja genau so wie Fabian geschrieben hat IC, Kleinteile , SMD kram eben. Da ist keine Stromversorgungsecke bei und auch keine von den unzähligen Stiftleisten und Wannenbuchsen. Da fällt dann das von dir genannte "geprüfte Boards " schwer. Sichtbare Kurzschlüsse denke ich mal wird Fabian nicht ausliefern. Jedenfalls war die Multi-IO eine sehr saubere Arbeit. Na und die noch fehlende Libs hast Du ja schon selber erwähnt.
Ich frage nur nach nicht das es da zu Missverständnissen kommt. Also bei mir sollte es so laufen wie mit der Multi-IO.
ich würde auch eine vollständig gelötete leiterplatte abnehmen, die langen stifte zum arduino nach unten, preis bis 70Euro ist ok. Die sockel mit langen stiften gab es bis vor einer woche bei C nicht. Weder einzeln noch als meterware. Aber das wird Fabian schon geprüft haben...
Servus!
Gern biete ich an, die Platinen komplett (also auch mit allen Pins, Wannensteckern, dem Schalter, Sicherung blabla) aufzubauen und vielleicht mit Hilfe von Dirk zu testen. Eine Art Test-Prozedere wäre dafür super!
Ich muss dann aber erst mal alle Kosten zusammen stellen. Ich gebe bescheid!
Ich mache das als Excel fertig und schicke es euch per pn!
Zum Arduino: Jumperbare 3,3V und 5V werden eingebaut. Muss man halt dafür sorgen, dass niemals beide gesteckt sind... sonst regeln hier einige Regler gegeneinander.
Grüße
anmerkung:
haben wir hier übersehen, dass adcs und IOs, welche an die digital- und analogpins des arduino angeschlossen sind, 5V pegel haben? Ist für die adcs und inputs weniger gefährlich, aber 5V-output sollten besser nicht auf einen eingang eines 3,3V prozessors (mit einigen wenigen ausnahmen wie den arm prozessoren, die tatsächlich 5V an den digitalen vertragen, nicht gedoch meines wissens nach an den adcs, eben auch nicht am i2c) .
So, dann mal aufgepasst alle miteinander!
Der Gesamtpreis (Platine, ICs, SMD-Bauteile, Pins, Wannenstecker, lange Arduino-Pins, Sicherung, Schalter, blabla, Porto, ich Löte alles fertig, teste alles) beläuft sich nun auf 80,94 Euro.
Das ganze könnte billiger werden, wenn mehr leute mitmachen würden.
Dann würde der Preis pro Platine schon deutlich sinken.
Jeder, der eine will, schreibt mir mal bitte eine pn mit seiner eMail-Adresse, dann schicke ich ihm alles Weitere.
Grüße,
Fabian
wo liegen wir bei der platine bei der staffelung? Würde es helfen, wenn ich noch eine unbestückte platine nehmen würde?
@Fabqu
Du hast ne PN hier.
@all bezüglich 3,3v
Ich gehe davon aus, das man als aktiven Steuerkontroller für den Arduino Bus nur einen kleinen Arduino UNO wählt und der müsste 5V haben.
Meines WIssens gibts von Atmel garkeine echten 3,3v 8-Bit Controller, die Niederspannungscontroler arbeiten wohl mit 1,8v. Zumindest hab ich schon einige Datenblätter gesehen wo die 1,8V genannt werden. Solche "Spezialfälle" kann man eben nicht verwenden oder man müsste noch aufwändige Pegel Umsetzer für den i2c für 5v/3+3v einbauen. Siehe:
http://arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardDue
Da steht z.B. ausdrücklich, das solche Boards nicht an 5v laufen!
Aber lohnt der Aufwand da noch was im i2c für 3,3v dazwischen zu setzen? Ich geb mich mit den kleinen Arduino Boards auf 5V Technik absolut zufrieden und die 3,3v, welche man dann noch z.B. per ex-board anzapfen kann (das arduino cpu Board wird allgemein eh separat z.B. aus UBAT übers eigene Netzteil versorgt - schon damit der arme RP6 Regler nicht vor Überlastung das quietschen anfängt) sind für mich nachrangig und mehr spielerei. Wenn es preiswert möglich und noch Platz da ist, bau eine jumperbare Pegelanpassung ein damit auch das Due Board am i2c läuft. Wenn nicht.. dann eben nicht.
http://de.wikipedia.org/wiki/Arduino-Plattform#Hardware
Da gibts ne schöne Tabelle mit Versorgungsspannungen... wer sich unbedingt ein Due Board genehmigen möchte, könnte sich das ggf. auch über RS232 verbinden. Man wird die i2c Leiterbahnen ja auch ganz einfach vom Trägermaterial abkratzen können.
Gruß
Servus!
erst mal @inka:
klar wird es mit jeder bestellten platine für alle etwas billiger, aber natürlich müsstest du dann zwei bezahlen... Der unterschied pro platine sind z.B. 5,60 euro, je nachdem ob wir 10 stück oder 15 stück bestellen. Insgesamt macht es also einiges aus. Aber das ist absolut dir überlassen! Wenn du nur eine willst, kauf nur eine. Alles andere ist ja quatsch.
@rolfD und alle:
also ubat ist ja nicht mit dem arduino-sockel verbunden, daher muss schon der 5V-regler herhalten momentan. Aber dafür hat die platine ja einen eigenen 5v-regler :)
das mit dem pegelwandler auf 1,8v wäre schon möglich, Platz wäre auch noch da. Aber wozu? Soll dann der i2c vom arduino jumperbar für alle drei pegel gemacht werden, also für 5v, 3,3v und 1,8v? Wird auch bissl ekelig.
Ich könnte versuchen, den i2c jumperbar wenigstens für 3,3v und 5v zu machen, wenn gewünscht. Benötigen wir eigentlich auch int-leitungen in anderen Pegeln? Habe ich bisher nur auf der MultiIO, nicht auf dieser hier da int von keinem der hier verwendeten i2c-komponenten benötigt wird.
danke an die, die schon ihre bestellungen geschrieben haben! Ich denke es ist im sinne aller, wenn wir noch etwas warten bis wir eine konkrete zahl haben. Dnn wisst ihr auch sofort eure genauen kosten.
ich mache mal einen "bestellungs-post", sonst fehlt hier vielleicht der überblick.
grüße und schönen sonntag abend euch allen!
Es gint noch mal diskussionsbedarf...
es sind ja momentan 8 der 16 PWMs an die SP8M3-MOSFETs angeschlossen. Nun ist hier das problem, wie bei jeder h-brücke, dass sie gerne mal durchschmoren wenn man beide motorkontakte auf Durchzug schaltet. Dann laufen die dinger auf Anschlag und irgendwann raucht es.
bis der i2c-PWM-IC jedoch initialisiert ist, könnte es bereits zu spät sein. Daher die Frage:
Wie löst man das?
Eine Möglichkeit wären z.B. Logik-Gatter, wie es beim RP6v2 gemacht wurde, aber damit wären dann die MOSFETs voll eingeschränkt auf Motortreiber. Das wäre denke ich schade. Ich könnte es jumperbar versuchen, wird aber aufwendig und etws unschön evtl.
Sonst Ideen? Dirk hat resettable Fuses empfohlen, aber damit kenne ich mich nicht aus, habe keine Erfahrungen damit.
Grüße
Hallo Fabqu,
Ich hatte im Post 27 schon mal auf eine zuverlässige Verriegelung der H-Brücke hingewiesen. Ob die mit der vom RP6 verwandt ist, weis ich grade nicht - jedenfalls tut sie es. Aufwand wäre pro Brücke ein kleiner ttl Schaltkreis.
Gruß Rolf
Hi!
Ja, das ist so ein Demultiplexer im Niobee. Das wäre zwar sicher, aber dann sind die SP8M3 eben zu nix mehr zu gebrauchen als zur H-Brücke, das wäre denke ich schade. N- und P-MOSFETs dieser Klasse kann man auch für andere Spielereien verwenden.
Pullups bzw -downs könnte ich noch anbringen, aber die lösen das Problem ja auch nicht. Default sind alle Outputs LOW vom PCA9685-PWM-Treiber.
Grüße
Hm stimmt wohl... zumal wenn man das Board anschließt und die Ports nicht braucht, neigt man ggf. dazu die Brücken nicht zu initialisieren... mir fällt da nur ein Tristate Inverterbaustein wie der 74HC240 ein.
Also Port---74HC240---Brücke.
Ich persönlich bin aber eh kein Fan von dieser Art der H-Brückenlösung denn sie wird an einem PCF Port nicht pwm-fähig sein wenn man nicht noch riesen Aufwand treibt und die PCF-ports mit den PWM ports vergattert. Man muss bedenken, das geht ja alles über den lahmen i2c Bus ... Was will man aber mit ner H-Brücke deren max. Schaltfrequenz bei unsyncronen 500-1000 Hz liegt und den i2c damit voll blockt? Selbst ein einfacher Floppy-Stepper als Motor würde den Bus schon in die Knie zwingen. Das ist zum Basteln und Experimentieren mit ersten Erfahrungen ganz nett aber sonst ...
Gruß
Hi Rolf,
nenene! Da hast du was missverstanden. Die H-Brücken hängen am PWM-Treiber PCA9685, der kann 16 Ausgänge über I2C nach 12bit-PWM schalten, acht davon hängen an den je vier N- und P-MOSFETs der SP8M3. Also absolut PWM-fähig ;)
Die IOs unseres PCF8575 sind zur freien Verfügung! Die hängen gar nicht an den H-Brücken!
Da sollte schon was gehen.
Ah ok. Mein Fehler. Dann bin ich beruhigt. Gruß Rolf
Hat keiner ne Idee zur Lösung des H-Brücken Problems? Ich könnte einen Freund fragen, der aber leider gerade noch im urlaub ist, keine Ahnung wann der wieder zurück kommt.
- - - Aktualisiert - - -
Eigentlich sollte es doch reichen, in die +UB-Zuleitung zu den P-Channel-MOSFETs einfach ne resettable fuse mit 4A oder 4.5A schaltstrom zu setzen. Bei 5A springt ja die hauptsicherung sowohl im RP6 als auch die des Boards (je nachdem, wo der Akku angeschlossen ist). Daher sollten die Motortreiber ohnehin nie über 4.5A fressen. Und wenn doch, dann springt eben diese eine resettable zuerst, bevor die unresettable reißt.
Andererseits: So eine resettable kostet auch kein großes Geld: wäre es euch da lieber, ich nehme noch so eine (sagen wir auslösend bei 5A oder 5.5A) als Hauptsicherung? Anstelle der sonst üblichen Glassicherung?
Ich kenne mich halt nicht wirklich aus mit den resettables, noch nie verwendet die Dinger. Sind ja aber scheinbar einfach nur nichtlineare Widerstände, die hochohmig bei hohen Temperaturen ( =hohen Strömen) werden.
Nur: Wenn man nicht bemerkt, dass man was falsch gemacht hat, was passiert dann? Fuse setzt sich, resettet sich nach Abkühlung, setzt sich wieder, und dann immer so weiter bis der Akku leer ist? Wie bemerkt man sowas und fängt es ab?
Grüße
TrainMen
13.08.2014, 15:23
Hi,
Die PTC sind sehr sehr Träge. Ich wäre davon nicht so begeistert. Ich hätte lieber die Glassicherung als Hauptsicherung für das Bord. Die ist bei einem Fehler gleich weg und bei der Suche nach einer neuen kann man über seinen Fehler nachdenken.
Als zusätzliche Sicherung für die H-Brücke könnte ich es mir vorstellen.
Also das Auslösen des PTC müsste man doch mitbekommen, denn irgendwas funktioniert ja dann nicht mehr. Vielleicht kann man auch eine LED schalten die dann leuchtet wenn der PTC ausgelösst hat. Doof nur wenn es erst nach ein paar Minuten passiert wenn man den Robot nicht mehr im Auge hat.
@Trainmen
Wenn ich Fabqu richtig verstanden habe (Post 62) , würde eine Sicherung auf dem Board schon beim einschalten durchbrennen weil die Brücken sofort durchschalten können und erst vom Prozessor über den i2c Bus via PWM entschärft werden müssten.
Ausserdem dürfte es sich um 4,5A pro SP8M3 Baustein handeln.. als Summenstrom könnte noch weit mehr zusammen kommen.
Daher ist fraglich ob eine Sicherung da überhaupt noch Sinn macht denn der begrenzende Faktor sind zum Einen der Ri des Akkus bzw. zum Anderen die glühenden Zuleitungen... Ich denke, man sollte da schon eine träge 5 oder 10A Schmelzsicherung vorsehen... aber sie verhindern nicht, das die Brücken irrtümlich durchschalten.
Zu diesem Problem hatte ich 2 Vorschläge gemacht.
Gruß
@Fabqu
Ich hab da was zum Thema 3,3v und 5v Levelshifter für i2c und andere Signale gefunden.... schau mal da:
http://www.adafruit.com/datasheets/an97055.pdf
Es geht da wohl um eine Mosfet-Schaltung bzw. bestimmte Mosfets von Philips wie der da:
http://pdf.datasheetcatalog.com/datasheet/philips/BSN10.pdf
Vielleicht ist das brauchbarer als "hoffen und beten" das es nicht knallt :)
Gruß Rolf
Grüß dich, Rolf!
also das I2C-Pegelwandler-Problem ist eigentlich gelöst, dafür verwende ich schon solche Mosfets, genuer die BSN20. Das passt also!
das problem sind ja die hochleistungs-Mosfets, die am PWM-Expander hängen. Das sind vier SP8M3, wie sie auch der RP6v2 verwendet. Jeder davon entält einen P- und einen N-Channel. Also steuern 8 PWMs diese acht mosfets. Default sind alle pwms low geschaltet.
ich glaube, du hattest da als Lösung auch Logik-Bausteine vorgeschlagen? Das wäre natürlich eine absolut todsichere Sache, aber dann sind künftig die acht leistungs-mosfets nur noch als h-brücke zu verwenden. Das ist sicher nicht gewollt.
daher hoffe ich noch auf eine andere Möglichkeit, wobei mir derzeit nur eine langsame resettable fuse (schaltet aber in unter 0.5s) in einer der Zuleitungen zu den mosfets einfällt, z.B. in der +UB-Leitung.
grüße
@Fabqu
also das I2C-Pegelwandler-Problem ist eigentlich gelöst
Aso ok..war mir entgangen. Gut. Was ist denn mit der Lösung zu den Brücken bezüglich Invertierender Leitugngstreiber a la 74hct240 ?
Damit wären die Brück auf high wenn der Ausgang low ist.
Das ist ja ein belastbares tristate Gatter, welches man über g1 / g2 abschalten und mit pullups/pulldowns dann ziehen kann.
Was vielleicht auch möglich wäre, sind bauähnliche Gatter z.B. vom Typ SN74BCT760 o.ä. mit Opencolector.
Damit wäre die Durchschaltspannung am mosfet erst scharf zu schalten wenn der Prozessor dies explizit veranlasst und am Port kann dann passieren was will ohne das die Brücken das Arbeiten anfangen.
Hätten die PWM Schaltungen sowas wie ein "Out Enable" .. hard- oder software seitig, könnte man sich das Gedöns ja sparen.
Ich bin erst mal im WE.. und wünsch euch ebenfalls ein schönes...
Gruß
Leute,
noch mal kurz ein paar Sätze zum Thema "Sicherheit" der H-Brücke:
1. Wenn die Schaltung so bleibt, wie fabqu das veröffentlicht hat (jeder der 2 MOSFets im SP8M3 wird durch einen eigenen PWM-Port des PCA9685 angesteuert), dann besteht anfangs (Hochfahren der Schaltung) keine Gefahr, wenn die Drains des N-MOSFet und des P-MOSFet der SP8M3 verbunden sind, weil der N-Typ einen High-Pegel zum Durchschalten braucht und der P-Typ einen Low-Pegel. Damit ist VOR der Initialisierung des PCA9685 über I2C zumindest der N-Typ MOSFet im SP8M3 gesperrt und es fließt kein Kurzschlußstrom.
2. Die Haupt-Gefahr für die H-Brücke ohne Hardware-Ansteuerung ist die Software bzw. möglich Software-Fehler.
3. Zum Thema "Verriegelung" (siehe auch Post #27 hier im Thread!): Bei der NiboBee dient der 74139 nicht zur "Verriegelung" (d.h. zum Schutz der H-Brücke), sondern der Schutz dieser Transistor-H-Brücke wird einfach durch die Zusammenschaltung der beiden Basis-Anschlüsse in jedem Strang der H-Brücke erreicht.
4. Man sollte die Ansteuerung der SP8M3 durch den PCA9685 vielleicht vor der Endversion der Platine einmal probeweise aufbauen und testen.
hi Dirk,
danke dir. meinst du, eine softwareseitige sicherung durch eine (von dir geschriebene) Bibliothek würde ausreichen? Zur Not evtl noch eine resettable in die +UB-Leitung?
Dann sollten wir doch auf der sicheren Seite sein, oder?
ich versuche die Mosfet-Schaltung erst mal aus. kann ich ja mit der MultiIO machen! muss am montag erst mal die Teile besorgen.
grüße
Hi Fabian,
danke dir. meinst du, eine softwareseitige sicherung durch eine (von dir geschriebene) Bibliothek würde ausreichen?
Ja, man kann da schon Sicherheiten einbauen, aber...
a) ... man dürfte dann auch nur die Funktionen der Lib zum Ansteuern der H-Brücken benutzen (da ist ja jeder dann selbst verantwortlich)
b) ... man ist gegen Probleme auch dann nicht 100%ig gefeit: Wenn sich Software "aufhängt" (durch Hard- oder Software-Probleme), könnte natürlich der PCA9685 in ungünstiger Stellung seiner Outports "hängen" bleiben.
Aus meiner (vorwiegend Software-) Sicht könnte ich mir folgende Optionen vorstellen, um noch sicherer zu gehen:
a) Einbau von Resettable Fuses (I_hold z.B. 2,5 oder 3A):
Nachteile: Sie reagieren erst nach einigen Sekunden, die verfügbare max. Dauerstromstärke für den Motor sinkt etwas unterhalb der Leistungsfähigkeit der SP8M3 (*).
Vorteil: Sie müssen nicht ausgetauscht werden, wenn der Ernstfall mal passiert ist.
Zu *) Die Leiterbahnen auf der Platine müßten ja bei Kurzschluß den Kurzschlußstrom einige Sekunden aushalten, bevor die Fuse anspringt. Vorschlag dazu: Alle hochstrom-führenden Leiterbahnen über die ganze Länge ohne Lötstopplack lassen, um sie beim Aufbau komplett dick verzinnen zu können. Dadurch gewinnt man eine gute Stromleitung, ohne die Leiterbahnen allzu breit zu machen.
Darüber hinaus sind die Fuses ja nicht allein: Die Schmelzsicherung F2 wird ja dann auch rasch abblocken.
b) Anstelle der langsamen Resettable Fuses baut man Kleinstsicherungen (z.B. SMD 1206, CONRAD 537038 ) in jeden Strang ein.
Nachteil: Müssen ausgelötet werden, wenn sie Überstrom hatten.
Vorteile: Klein, schnell. Auslöten wird kaum nötig sein, weil i.d.R. die Hauptsicherung eher ansprechen wird.
Wie oben unter (*) würde ich aber auf jeden Fall den Querschnitt der Leiterbahnen erhöhen!
c) Wenn man softwaremäßig die PWM z.B. über die N-MOSFets auf die H-Brücke bringt, dann dienen die P-MOSFets "nur" zur Richtungsumschaltung. Daher könnte eine Option sein, die Gates der P-Typen jumperbar AUCH auf 4 IO-Ports eines 5V-IO-Expanders PCF8575 zu legen: Für die Richtungsumschaltung braucht man keine PWM UND die Gates der P-MOSFets wären dann beim Hochfahren der Betriebsspannung auf High-Pegel (= Aus, Standard beim PCA8575!).
Ergebnis: Beim Hochfahren einer so verschalteten H-Brücke sind alle 4 MOSFets AUS.
Vorstellen könnte ich mir a) und c) ODER b) und c).
So leute,
ich mach das jetzt erst mal so: eine einzelne resettable Fuse in den +UB-Strang zu den P-MOSFETs. Alles andere bleibt (erst mal) wie gehabt.
Zwei neue Diskussions-Bedarfsstellen sind dank Dirk aufgetaucht:
1.) Der PWM-I2C-Treiber kann nur max. 1kHz bringen, was bei Verwendung der MOSFETs als Motortreiber evtl ekeliges Quiken der Motoren verursacht. Daher wäre es evtl besser, einen PWM-Treiber zu verwenden, welcher wenigstens seine 10kHz schafft.
Wollt ihr das? kennt jemand einen empfehlenswerten Baustein? Sollte wenigstens 10-16 PWM-Ports haben und via I2C ansteuerbar sein.
2.) Wir haben ja zwei frei verwendbare AD/DA-Treiber mit je 4 AD- und einem DA-Pin. Diese sind für 5V ausgelegt. Wenn jemand aber nur 3,3V messen will, wird dadurch natürlich seine Auflösung eingeschränkt. Daher die Frage: sollen wir einen der AD/DA-Bausteine auf 3,3V legen?
Nachteil: wird ekelig zu verdrahten (betrifft aber nur mich) und man läuft Gefahr mal einen 5V-Pegel anzulegen, was den Baustein zerstören könnte. Vorteil wäre nur, dass man auch 3,3V-Pegel mit hoher Auflösung messen könnte.
Meine Meinung: Auf 5V lassen, dann ist man sicher.
Grüße
Hi fabqu,
also ich bin für den 10kHz treiber - ohne quieken...
Also 10khz quiekt auch... selbst schom am rp6 ausprobiert.
https://www.roboternetz.de/community/threads/58903-Motor-PWM-19KHz
Bezüglich der 3,3V Geschichten... vielleicht überlegen wir mal wo überhaupt 3,3V gebraucht wird denn die üblich TTL Spannung ist meines Wissens immer noch 5V.
Mir fallen da nur 1. SD/MMC Speicherkarten, 2. Atmel ARMs OHNE 5V Toleranz und da auch nur das ARDUINO DUE und 3. NXP ARMs MIT 5V Toleranz ein...
Für was brauchen wir 3,3V noch?
Wenn da jetzt nicht noch 1000 Vorschläge kommen, wäre ich doch eher für die 5v-Lösung am AD. Für vernünftiges Messen wird man sich eh ein Spannungsteiler / Messbrücke davor setzen.
Gruß
Hi fabqu,
Zu 1) Ich habe kein geeignetes I2C-PWM-Treiber/Converter-IC gefunden. Fast alle sind für LEDs ausgelegt. Die Leute, die PWM zur Motoransteuerung oft brauchen (Flugmodellbau, Copter...), verwenden meist fertige oder auch selbst gebaute PWM-Ansteuerungen, wobei die PWM meist aus einem kleinen µC kommt. Der ist dann seriell oder per Frequenz-/Impulslängen (Servo) angesteuert.
Das wäre für unsere Platine wohl überzogen, wenn wir noch einen kleinen µC nur für die PWM drauf setzen wollten, oder?
Eigentlich ist das Hauptziel ja die Nutzung der bis zu 8 Ports für einzelne PWM- oder Schaltausgänge. Wer damit Motoren ansteuern will, muss halt mit den max. 1000Hz PWM leben.
Wer kräftige H-Brücken für Motoren braucht, wird ja auch überall fündig:
<1> (http://www.shop.robotikhardware.de/shop/catalog/index.php?cPath=65&osCsid=9c3cbd04e2d068d8646aaf18330b4023), <2> (http://www.roboter-teile.de/Oxid/Motor-Servotreiber/), ...
Zu 2) Kein Problem: Die AD/DA-Wandler können auch alle bei 5V bleiben.
Das wäre für unsere Platine wohl überzogen, wenn wir noch einen kleinen µC nur für die PWM drauf setzen wollten, oder?
Nur so als Idee...
Würde man statt einem "kleinen" direkt ein atmel 328 ... oder noch viel besser einen 644p/128p in 44pin drauf setzen, könnte man auch gleich das Arduino cpu Board einsparen.
Es müsste dann nur ein serial Ponyprog ISP interface mit aufs Board weil man sonst dafür wieder Geld ausgeben muss.
Dann allerdings... hätte man auch die Hardware zusammen, um ein Bootloader incl. Fuses mit avrdude in eine CPU zu schießen und diese z.B. dann gegen die 32er auf der Base oder m32 auszutauschen. Und man spart die teuren langen Steckverbinder. Nachteil.. das ist nur für Leute interessant, die sich zutrauen, die alten cpus aus und neue ein zu löten. Zum brennen und kurzer Funktionsprüfung reicht vermutlich jedoch schon ein sachtes aufdrücken der CPU auf die unbestückten Lötpads des Boards ohne wackeln. Wenn man sich dann seine 10 CPUs gebrannt hat, kann man ja dann noch eine fest einlöten.
Ich überlege schon länger, wie ich eine smd-cpu programmiert kriege... wobei ich ein Ponyprog für 40-pin Gehäuse schon habe und mit dem Gedanken spiele, mir ein passenden Adapter für smd cpus zu bauen. Das ist etwas gewagt aber vielleicht gibts ja doch Leute, die sich dafür begeistern. Die Base mit einem 128p fänd ich schon sehr reizvoll. Der Bauteileaufwand um die Idee umzusetzen läge irgenwo bei ca. 10-15 € und das teuerste daran ist die CPU für 5 €. Man spart aber z.B. auch ein extra cpu Board incl. allem Geraffels wie Netzteil und so.. im Wert von ca. 25-45 €. Freie alternative Bootloader gibts auch wie Sand am Meer... Durch geänderte Fuses könnte man die Base vielleicht auch auf 16MHz aufrüsten.
Wie gesagt... nur so eine Idee wie man den Nutzen des Board deutlich erhöhen könnte.
Natürlich könnte die CPU auch die Ports der h-Brücken als i2c-slave direkt und ohne durchknallen in 20 khz steuern und erspart uns diesen komischen pwm chip.
Gruß
Hey RolfD :D
Ja, klar, geile Idee. Aber ich glaube das überzieht alles was Anfangs angedacht war (einfach, billig, nur Porterweiterungen). Ich weiß ich weiß, ein eigener uC wäre Hammer, aber das sprengt glaube ich alles hier.
Gerne (sorry dass ich dich nun schon wieder vertröste) können wir danach aber an einem eigenen uC für die M128 arbeiten. Habe die M128 mal vor laaanger Zeit gekauft, einmal für ein Projekt verwendet, seither liegt das Ding ungenutzt im Schrank. Daher bin ich hier gern für Späße zu haben, aber für dieses Projekt hier ist das ehrlich gesagt zu krass.
Wenn es dann keine Einwände mehr gibt, schließe ich damit die "Entwicklung" für diese Platine ab, mache alles fertig für die "Produktion" und dann warten wir mal die Deadline für Bestellungen ab.
Ich schreibe euch dann allen, wenn es soweit ist. Wenn alle Schaltpläne etc fertig sind, stelle ich sie hier online.
Was wir aber noch brauchen ist ein passender Name für der Gerät!
Grüße
Also was wir mal besprochen hatten... Das ist jetzt nicht so die große Herrausforderung im Vergleich zum Board. Es gibt zudem inzwischen genug billige Alternativen wie rasbery pi oder diverse andere cpu-Boards. Ich glaube daher nicht, das sich da noch Entwicklungsaufwand lohnt - das ist einfach um Jahre zu spät. Ich hab inzwischen z.B. ein NET-IO Board + Addon mit 128p cpu und ethernet bootloader am RP6 als Tochterboard ... Kostenpunkt 40 €... jetzt brauch ich sowas auch nicht mehr.
Ich halte die Version mit eigener CPU auf dem io Board für deutlich leistungsfähiger, sicherer und flexibler bei fast gleichen Kosten... aber nicht einfach.. da geb ich dir recht. Aber was solls. Einige Punkte wie die arduino-Brücke und LEDstrips dimmen kann man ja mit dem Board wohl umsetzen. Wobei ich nen Lachanfall bekomme wenn demnächst jemand ein Youtube Video mit RP6 und gedimmten/farbwechsel LEDstrips postet, die der Bot sich liniensuchend hinterher schleift :D
Wie wärs mit "Arduino Bridgeboard"?
Gruß
Hey alle miteinander ;)
Die Bestellungen sind nun quasi abgeschlossen. Morgen schicke ich allen Bestellern eine eMail!!!
Schönen Sonntag Abend noch!
So, RN-Artikel steht auch schon mal, natürlich noch unfertig...
HIER (http://rn-wissen.de/wiki/index.php/RP6_ArduIO)
Grüße
Den RN-Artikel zur Software wird es dann mal...
HIER (http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software)
...geben. ;)
So, der Prototyp wurde gerade an den Herren von der Platinenfräse geschickt. In ein paar Tagen ist sie da, dann werde ich mich ans aufbauen machen. Teile sind schon zu hause.
Ich habe noch die Batteriespannung der externen Stromversorgung an ADC3 von einem der ADC-ICs gelegt. Jedoch jumperbar, also kann man hier auch was anderes anschließen.
Wenn die Platine fertig aufgebaut ist, geht sie an den Software-Chef Dirk ;)
Und wenn dann alles passt, kommt das Ding in die Fertigung. Ich halte euch auf dem Laufenden!
Grüße
Der Prototyp ist da!
Ich hoffe, ich kann bis zum Wochenende das Ding löten und an Dirk weiter schicken.
29036 29037
Ich halt euch auf dem Laufenden!
Grüße
Schaut gut aus... aber was gabs denn da für Ansagen von wegen Platine so voll? So dicht bestückt sieht die garnicht aus. :) Naja täuscht vielleicht ohne Bauteile. Mal abwarten.
Könntest Du eigentlich auch 4-Lagen Multilayer fertigen lassen? Ich will jetzt nicht über den Sinn diskutieren.. nur einfach die Frage.. geht oder geht nicht?
Gruß RolfD
Hey Rolf,
ja, Platz war noch da, aber ich wollte nicht dass es so wird wie bei der MultiIO, jedes bauteil mehr kostet ja auch Geld... und dann shcreckt das wieder ab, da hilft auch kein "man muss ja nicht von Anfang an alles bestücken, man kann ja auch nachher noch Zeug drauf löten".
Wegen Multilayer: ich selbst könnte das schon designen, allerdings wird dann die Herstellung doch recht teuer. Auch mit Prototypen wirds dann nicht mehr hinhauen, da ich niemanden kenne, der Multilayer herstellt mal so eben als netten Gefallen...
Aber möglich? Klar!
Der Prototyp ist fertig gelötet, jetzt geht das Ding zum Dirk für die Softwarearbeiten und Tests ;)
Um euch auf dem Laufenden zu halten:
Dirk hat seit Donnerstag glaube ich den Prototypen und macht sich mit vollem Einsatz an dem Ding zu schaffen ;)
Es gab auch schon einige Anfangsschwierigkeiten und Verbesserungsvorschläge von ihm für die Hardware (z.B. Pullups für die SP8M3) welche ich nun ins Dsign einpflegen werde.
PWMs und MOSFETs sind soweit vom Dirk sozusagen in der Mache, danach geht es an die IOs und ADCs. Leider lassen sich diese aus unerfindlichen Gründen gerade noch nicht einmal ansprechen, aber das wird sicherlich auch noch gelöst...
Grüße
Noch ein Update:
PWMs, MOSFETs und ADCs laufen. Mit den IOs gibts derzeit noch Probleme, aber das bekommen wir sicher hin.
Von Software-Seite hat Dirk grünes Licht gegeben. Er wird mir den Prototypen in etwa 10 Tagen zurückschicken, damit ich mich nochmal um diese verflixten IOs bemühe.
Wenn es euch recht ist (Einwände einfach per pn an mich) werde ich die Platinen jedoch erst in Auftrag geben, wenn alle Unklarheiten beseitigt sind.
Wir gehen zwar von einem geringfügigen Problem bei den IOs aus, da Hardware- und Softwareseitig alles läuft, wie es soll (Pin-Konfig etc). Vermutlich hat also der Test-IO-IC einfach beim Löten zu viel Hitze abbekommen oder ist schlichtweg defekt.
Dennoch mache ich es lieber auf Nummer sicher, löte noch einen IO-IC auf den Prototypen und teste diesen dann.
Ich schicke euch dann nochmals die "Bestellisten", da sich geringfügiges geändert hat (z.B. brauchen wir Pullups an den MOSFETs und ich hatte beim letzten Mal sämtliche Wannenstecker vergessen).
Wenn es Gründe zur Beanstandung gibt, dann seid bitte so frei und meldet euch bei mir via pn oder eMail.
Wenn sich doch noch jemand spontan für die Platine entscheidet, ebenso einfach pn an mich!
Grüße
Update:
Die Platine ist jetzt wieder hier bei mir. Da ich kein Risiko eingehen möchte, möchte ich noch den IO-Expander testen, der bisher nicht funktioniert hat. Da wir vermuten, dass der Chip an sich defekt ist, habe ich bei Conrad neue bestellt. Leider haben die dort dafür gerade "Lieferengpässe" - ja ich weiß, wer beim großen C bestellt ist selber schuld. Aber da es hier eine Filiale gibt, dachte ich fälschlicherweise, es ginge so schneller als liefern mit Farnell.
Nun ja, etwas Geduld noch. Sobald das Ding da ist, wirds eingelötet und getestet.
Wenn alles passt, schreibe ich euch allen noch mal.
Was noch (optional) verändert wurde ist ein LC-Filter, da dem Dirk bei seinen Tests mit Motoren direkt die M32 abgeschmiert ist duch die Störungen... Das sollte deutlich besser sein, wenn man (wie es vorgesehen ist auf der ArduIO) einen getrennten Akku für die ArduIO und für den Controller nimmt. Dennoch der optionale LC-Filter. Wer den nicht will, da er eh keine Motoren sondern nur ohmsche Lasten verwenden will, kann sie weglassen.
Danke an Dirk für die Tests, das schreiben der Libs und der Testsoftware und für die vielen guten Vorschläge!!!
Grüße
Halleluja!
Die Teile vom Conrad sind endlich da. Werden heute Abend eingelötet und hoffentlich schaffe ichs bis zum Wochenende, das Ding mal zu testen. Wenn alles funzt, schicke ich euch allen nochmal ne Mail mit allen Einzelheiten und dann können wir - endlich!!! - bestellen ;)
Servus miteinander!
Leider brachte auch der zweite IO-Expander keinen Erfolg und weder softwareseitig noch hardwareseitig können Dirk und ich irgendeinen Fehler finden.
Daher versuchen wir es jetzt mit dem PCA9535, dem quasi identischen Bauteil eines anderen herstellers.
Sorry, dass es sich nun so hinzieht. Aber wir wollen ja, dass später alles funktioniert!
Woran liegt es denn daß das nicht funktioniert?
Okok, das ist wohl genau die dumme Frage, die Du jetzt garnicht brauchen kannnst... :mrgreen:
Aber im Ernst, setz Dich doch nicht selbst so unter Druck. Das Ding ist fertig wenn's fertig ist. Ich persönlich möchte das Board einfach "da haben" wenn ich mal wieder etwas Experimentierdrang verspüre und nicht etwa weil ich es in ein knappes Terminkorsett eingeplant hätte. Denke das ist wohl bei den meisten anderen Leuten ähnlich.
Also mach das gut aber in Ruhe - und wenn man sich 1..2 Tage Aus-Zeit gönnt ist das manchmal auch kein Fehler weil man danach mit verändertem Blickwinkel wieder an die Sache ran geht.
Gut Holz! ;)
TrainMen
22.10.2014, 06:51
Hi fabqu,
was verstehe ich denn da schon wieder nicht ?
Du schreibst IO Expander funktioniert noch nicht. Sind damit die PCF8575 gemeint ? Dann aber willst Du es mit dem PCA9535 versuchen. Der ist doch aber identisch mit dem PCA9685 und zuständig für die PWMs. Im Post 94 schreibst Du aber die PWMs funktionieren.
und mach dich bloss nicht verrückt.
Servus! Erst mal danke ;)
Was hier genau nicht funktioniert, wissen wir einfach nicht. Dirk steuert die dinger "nach Anleitung" an, ist ja bei I2C keine Kunst. Und ich verdrahte das Ding nach Anleitung, auch keine Kunst.
Wenn wir direkt am IC messen, sehen wir dass GND, VCC, alle Adressen und der I2C anliegen. Aber lesen und/oder schreiben können wir nicht, soll heißen wir sehen keine Input-Pegel wenn wir außen welche anlegen und wir sehen keine Outputs, wenn wir welche schreiben.
@TrainMen: Es geht um den PCA8575, den IO-Expander. Der PWM-Expander funktioniert, auch der AD/DA. Nur der IO nicht... keiner davon.
Grüße
TrainMen
22.10.2014, 10:52
Hi,
da habe ich wohl einiges durcheinander gebracht, PCA8575 und PCA9685 sind natürlich nicht identisch, wohl aber PCA8575 und PCA9535.
Ich habe mich von den Buchstaben PCA durcheinander bringen lassen, denn im Schaltplan steht noch PCF und im Wiki.
So, Dirk hats gelöst. Es funktionieren nun alle IC-Typen, also PWM, ADC und auch beide verwendeten IOs. Dennoch fiel die Entscheidung bei dem IO-Expandern auf den PCA, nicht den PCF, da er im Gegensatz zum PCF mehr Leistung bringt.
Ich mache dieses Wochenende denke ich alles fertig und schreibe euch allen nochmals.
Es gab ja eine Änderung bezüglich der H-Brückenplanung. Dort haben wir nun dank Dirk einen LC-Filter angebracht um die Motoren vom Rest der Schaltung etwas zu entkoppeln. Wie gut das letztenendes funktioniert wurde nicht getestet. Die dicken MOSFETs als Motorbrücke mit den 1kHz-PWM-Treiber zu verwenden hält wohl niemand für besonders sinnvoll, daher sollte jeder die Filter-Geschichte weglassen, der nur ohmsche Lasten an den MOSFETs verwenden möchte.
Das wird dann aber alles nochmals in der eMail beschrieben!
Grüße
Woran lag's denn ursprünglich mit dem PCA? Wenn man selber später an dem Teil rumfummelt / modifiziert könnte man ja wieder auf's selbe Proiblem stossen.
OK,
es ist soweit ;)
Jeder Interessent sollte gerade eine eMail zur Bestellung bekommen haben. Leider ist der Preis um ein paar Euro gestiegen... ich hoffe, das bewirkt nicht, dass jemand abspringt :|
Wenn jemand Interesse hat, aber gerade keine Mail erhalten hat, dann bitte pn oder Mail an mich!!!!!
Einen Link mit den wichtigsten Daten (Layout, Teilelisten, Fotos, Datenblätter und später auch Code) gibts hier:
https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0
Sobald alle Bestellungen da sind, mache ich nen Online-Großeinkauf und dann gehts ab!
Grüße
Hi cdk,
Woran lag's denn ursprünglich mit dem PCA? Wenn man selber später an dem Teil rumfummelt / modifiziert könnte man ja wieder auf's selbe Proiblem stossen.
Der PCA9535 ist softwaremäßig anders anzusteuern als der PCF8575. Insbesondere hat er 2 Register für die "Datenrichtung", ähnlich wie bei den ATMegas das DDRx.
Was aber letztlich den Ausschlag für den PCA9535 gebracht hat:
Durch seine Push-Pull-Ausgänge braucht man keine Pullup-Widerstände, also wird das Platinendesign einfacher. Da freut sich fabqu!
Jap, da freu ich mich!
Übrigens an alle selbst-Löter:
Folgende SMD-Typen werden verwendet: 0805 (fast alle Widerstände, Kondensatoren, LEDs), 1206 (Größere Kondensatoren), 0402 (ein paar Widerstände bei den MOSFETs. Ging leider nicht größer, tut mir leid! ). An ICs haben wir TSSOP24 (IO-Expander), TSSOP28 (PWM), SO16 (AD/DA), SOP8 (SP8M3), SOT-223 (beide Spannungsregler) und SOT23 (Transistoren, etwa zur Pegelwandlung I2C).
Die dick gedruckten sind "unschön" zu löten ;)
Grüße
So,
dann schließe ich mal die Hardware hiermit ab.
Es ist soweit alles fertig, ich muss nur noch mit drei Platinenherstellern über die Kosten reden ;)
Dann ist vielleicht noch für jeden eine kleine Überraschung drin. Die würde, wenn ihr sie bestückt wollt, nochmal 5,50 Euro kosten. Wenn ihr sie erst mal unbestückt wollt, ist sie kostenlos ;)
Wer unbedingt wissen will, was das für eine Überraschung ist, bevor er mir nochmal 5,50 Euro gibt, sagt bitte einfach bescheid. PN oder eMail.
Grüße und ein großes danke an alle Unterstützer und Mitmacher!!!!!!
Puh!
Erste Bestellung ist raus: knapp 500 Euro bei Farnell ;)
Hoffentlich nix vergessen.
Bestellung #2 und #3 gehen auch gleich raus, morgen werden die Platinen bestellt.
In 8 Arbeitstagen sollte eigentlich alles da sein, dann gehts ans Sortieren, Löten, Verschicken :D
Ich schreibe euch vermutlich heute noch wegen Bezahlung, wenns OK ist!!!!
Juhuu!
Die Platine ist da :)
Gestern ist sie angekommen!!!! Leider haben die ohne mein Wissen einen weiteren Layer in den Bestückungsdruck genommen und nun sind hier und da ein paar Sachen überdruckt. Ich hoffe, das stört euch nicht zu sehr! Ansonsten bitte gleich ne Mail oder pn an mich.
Habe gestern und heute gleich mal die erste aufgebaut, wird später getestet.
Fotos findet ihr HIER (https://www.dropbox.com/sh/gaa1qriwsu1l7jk/AADwPgW_tGZxxKVsMFtEWCKLa?dl=0).
Morgen Abend habe ich wieder Zeit, da wird die nächste aufgebaut. Leider fehlen mir immer noch Teile, welche gerade schwer lieferbar waren. Ich werde da am Montag nochmal nachtelefonieren. Sollten angeblich erst Anfang Dezember wieder da sein, aber vielleicht kann ich das irgendwie beschleunigen.
Grüße
hallo,
bevor ich jetzt beim Durchlesen dieses Riesen-Topics nicht die aller-aktuellsten Infos erwische...
1) ist es jetzt auch Arduino-Due- und Arduino-Mega-kompatibel und mit Sketch programmierbar?
2) Lässt sich I2C schneller als mit 100kHz verwenden (z.B. 400kHz) ?
3) lässt es sich für den Arduino Due auch am 2. Hardware-I2C Port (TWI 2) betreiben?
4) Welche I2C-Adressen sind dabei bereits vergeben?
5) Lassen sich am verwendeten I2C Port noch weitere I2C Geräte anschließen?
6) wieviele digitale pwm pins (0-255 wie Arduino-Standard) sind verfügbar?
7) darüberhinaus: wieviele rein digitale Pins ohne pwm?
8) darüberhinaus: wieviele ADC Pins ?
9) darüberhinaus: wieviele DAC Pins ?
10) sind pullups fest verlötet (ggf. wieviel KOhm) oder lassen sie sich verändern / unterbrechen / frei extern durch andere ersetzen ?
11) kann man das Shield auf die Arduinos aufstecken wie übliche Shields?
12) werden dann die Pfostenbuchsen des Arduino durchgeschleift auf obenliegende Pfostenbuchsen wie bei anderen Arduino-Shields?
13) sind dann nach dem Aufstecken auch noch die 2 SPI Header, Reset-Taster und der JTAG-Header des Due erreichbar?
Hi HaWe,
ich versuche das mal alles so genau wie möglich zu beantworten ;)
1.) Das Board hat Pinheader, welche kompatibel sind mit den üblichen Arduino-Layouts. Leider habe ich keinen Due oder Mega da, daher kann ich das nicht direkt beurteilen. Wenn du willst, prüfe ich das aber nach! Programmieren lässt sich das Board um das es hier geht gar nicht, alle Bausteine sind reine I2C-Komponenten.
2.) I2C geht auch mit 400kHz
3.) Kann ich wie gesagt (noch) nicht sagen
4.) Alle I2C-Adressen (zumindest jeweils A0 und A2) sind wählbar. Eine Liste der Adressen wird es demnächst geben, wenn Dirk mit seinen Softwarearbeiten fertig ist.
5.) Klar! 5V-Pegel oder 3,3V-Pegel-I2C sind vorhanden und auch auf Extrapins rausgeführt.
6.) Verfügbare 5V-PWM-Pins hat die ArduIO 16 Stück. Acht davon sind direkt auf Pins rausgeführt und können über Jumper weiter verwendet werden (etwa für LEDs). Acht sind auf MOSFETs (je vier auf n-, 4 auf p-Channels) gelegt, sind daher nicht direkt verwendbar (oder nur mit Lötarbeiten).
7.) reine Digi-IOs sind 48 vorhanden. 32 davon haben 5V-Pegel, 16 haben 3,3V-Pegel
8.) 12 ADC-Eingänge
9.) Drei DAC-Ausgänge
10.) Pullups an IOs sind nicht vorhanden. Es sind lediglich Pullups an den Int-Leitungen der drei IO-Expander vorhanden (Int-Leitungen der IO-Expander lassen sich jumperbar auf die drei Int-Leitungen des RP6-Systems legen) sowie zwei fest verlötete Pullups am 3,3V-I2C-Bus (notwendig für den Busbetrieb).
11.) Ja. Es wurden bei diesem Board durchgehende Arduino-Header verbaut, wie DIESE HIER (http://www.exp-tech.de/Zubehoer/Steckverbinder/Arduino-Stackable-Header-Kit.html). Pins sind nach unten gelegt, Buchsen nach oben.
12.) Ja. Siehe 11.)
13.) Wie gesagt, kann ich schlecht ausprobieren. Lässt sich aber sicher rausfinden ;)
Ich hoffe ich konnte helfen.
Grüße
hallo fabqu,
danke für die schnelle und ausführlich Antwort! Ist wirklich toll gelungen!
zu den Pullups (10): hier meinte ich die Pullups, die das Board benutzt zum Anschluss ans Arduino-TWI. Meist werden ja ca. 4k7 pullups verwendet. Wenn ich allerdings weitere i2c-Komponenten an denselben Bus anschließen will, könnte es sein, dass diese andere Pullups benötigen (im Extremfall 47k-82k) - gesetzt den Fall, dass die von dir verwendeten i2c-Komponenten das überhaupt vertragen. PCF8574 z.B. tun das durchaus, PCF8591 auch. Mein Steckenpferd ist aber u.a. auch das Anbinden von Lego-NXT-Sensoren, die auf Bitbanging I2c ausgelegt sind und oft nur mit 47k-82k Pullups funktionieren - die würde ich u.U. gern an denselben Bus mit dranhängen, an dem auch das Muxerboard hängt. Aber auch eine Pixy-Cam könnte ich mir gut zusätzlich vorstellen an diesem Bus zum Muxer, die dann aber wieder Standard-I2C mit Standard-Pullups braucht (hier sind, meine ich, allerdings bereits 4k7 Pullups fest eingebaut, man müsste dann andere, die zum Muxer-SDA/SCL führen, ggf. disablen können.
zu 6): Da ich mit den pwms durchweg DC-Encoder-Motoren antreibe, interessieren mich diese vorrangig als Enable-Pins für Motortreiber.
Mit Mosfets kenne ich mich nicht aus, ich verwende durchweg fertige Motortreiber-H-Brücken für 12-15V mit knapp 100W Dauerleistung. Denkst du, ich kann meine Motoren direkt an die Mosfets anschließen (vorwärts/rückwärts-Betrieb, ähnlich wie mit L293/L298) ?
Ansonsten bräuchte ich pro pwm-pin 4 weitere normale (in1/2 für die H-Brücken und je 2 für Encoder). Käme man insgesamt auf 12 Motoren (4-5 vom Arduino Due direkt, 7-8 vom Muxer-Board), wäre das ideal, dann könnte ich nämlich ein 2. Huckepack-Mega-Board als Motor-Multiplexer einsparen. Das würde allerdings bedeuten: 7-8 pwm-Muxer-Pins plus 28-32 normale Muxer-Digi-pins, was ja dann wohl locker ausreicht, auch schon ohne die Mosfets.
Trotzdem würde mich die Leistungsfähigkeit dieser Mosfets schon interessieren, wenn ich mir auch momentan noch gar kein spezielles Einsatzgebiet vorstellen kann (außer eben Motorantrieb).
zu 1.): Bleibt die Frage der Programmierbarkeit mit Sketch
- hier meinte ich aber: wie man die neuen Ports über die Programmierung des Arduino anspricht. Ideal wäre es, wenn die "remote"-Muxerpins mit Nummern angesprochen werden könnten z.B. ab 100 oder 128 aufwärts), die sich dann im Arduino-Sketch-Programm genauso verwalten lassen wir die lokalen Arduino-Pins.
Also z.B.:
uint8_t ISRab |= (digitalRead(2) << 1) | digitalRead(3); // liest die lokalen Dpins 2 und 3 für einen Motorencoder
// während
uint8_t ISRab |= (digitalRead(102) << 1) | digitalRead(103) // die 2. und 3. Dpins auf dem Muxer-Board liest.
Wie das ganze über I2C ausgeführt wird, müsste dann ein Wrap um eine I2C-Funktion leisten können.
Da das ganze zeitkritisch ist, müssten alle 24 DPins für Encoder (4 lokal, 8 auf dem Board) mindestens alle 250-500µs über IRQs (IRQ1 per DueTimer) ausgelesen werden können.
Denkst du, das Board bzw. der i2c-Bus für die ganzen Pins ist dazu schnell genug? Es sind zwar nur 4kHz für die Encoder-Pins. aber der ganze Rest an Daten hängt ja auch noch dran.
Ich hoffe, die Fragen sind nicht allzu speziell oder gar zu abwegig... :-/
Hi!
Also:
Pullups: auf der 3,3V-I2C-Seite sind tatsächlich 4k7-Pullups, auf der 5V-I2C-Seite momentan gar nichts, da hier 4k7-Pullups auf dem Mainboard des RP6-Systems liegen.
Andere oder zusätzliche Pullups sind aber gar kein Problem! Da ich alle Platinen selbst löte sind Extrawünsche machbar ;)
zu 6.) Ich würde dir NICHT empfehlen, mit den hier verwendeten MOSFETs Motoren zu betreiben. Möglich ist es, es sind auch "gute" Rücklaufdioden und ein passabler LC-Filter extra dafür da. Dennoch: 1. sind die MOSFETs eher für 20-40W (7-8V und 4-5A) ausgelegt, zweitens schafft der PWM-Baustein gerade mal 1000Hz. Das ist deutlich zu wenig für eine vernünftige Motoransteuerung... würde ich dir also abraten. Lieber ein vernünftiger Prozessor, der die Motoren ansteuert.
zu 1.) Die Bibliotheken, die Dirk vorbereitet, sind (denke ich) eher für den RP6 gedacht. Arduino-Libs müsste man sich dann daraus "copy-pasten" oder eben selbst erstellen. Dann sollte auch Sketch kein Problem mehr darstellen!
Über das Zeitkritische weiß ich leider auch zu wenig zu sagen! Ist sicherlich eine Frage der Software-Lösungen.
Ich habe schon gesehen, dass du im Anderen Post mit Dirk in Kontakt bist. Da ist er sicherlich der "sinnvollere" Ansprechpartner. In der Programmierung bin ich eher unterer Durchschnitt...
Grüße
Hi fabqu,
zu 1.) Die Bibliotheken, die Dirk vorbereitet, sind (denke ich) eher für den RP6 gedacht. Arduino-Libs müsste man sich dann daraus "copy-pasten" oder eben selbst erstellen. Dann sollte auch Sketch kein Problem mehr darstellen!
Eine Arduino Library für das ArduIO Board ist in Planung: HIER (http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software#ArduIO_Library_3), zum "letzten Schliff" brauche ich die Hardware, dann kann's hoffentlich losgehen .... ;)
hi,
super - für mich persönlich hängt es dann "nur" an der Echtzeitfähigkeit für die 16 Encoder-Pins (über IRQ), denn die Motoren müssen ja vom Master-Arduino per PID control über die Encoder in Echtzeit gesteuert werden können: 4kHz mit 16 pins Bandbreite.
ABER -
wenn Ihr gerade dabei seid...
könnte man auf dem Board nicht evtl auch noch 256k-1MB permanten Speicher verbauen, ebenfalls über den i2c-Zugriff, der aber auch SEEEEEHR viele Schreibzyklen aushält (>> 10.000.000) ?
Vllt SD 4GB, class 10 oder so?
Mit einer lib, die in etwa die file-I/O-Funktionen von stdio.h hat (fopen, fread, fget, fgets, fscanf, fput, fputs, fprint, fprintf, fflush, fclose oder änhliches)
wenn man den Bus mit Highspeed-I2C (400kHz aufwärts) fährt, dann ist es sicher alles noch schnell genug (und hoffentlich für den zusätzlich angeschlossenen Rest am Bus nicht schon zu schnell...)
Ich habe da nämlich gerade ein ganz eklatantes Daten-Speicher-Problem mit dem Due. :-/
Hi!
Leider ist die Platine schon fertig! Ich löte gerade wie ein Weltmeister, um die alle fertig zu bekommen und an diejenigen, die welche bestellt hatten, rauszuschicken.
Ein SD-Steckplatz war leider nicht geplant, da das RP6-System sowas bereits besitzt. Aber soweit mir bekannt lässt sich mit dem Arduino genauso eine SD-Ansteuerung realisieren, dank SPI!?
Fertige, billige SD-Reader finden sich auf eBay etc.
Grüße
ja, stimmt ntl mit den SPI-Dingern. Wenn ich endlich mal ein TFT fände mit SD-SPI, die zusammen ausschließlich auf den ICSP-Headern funktionieren, wär ja auch alles gut.
Ist aber eh nur eine Nebensache gewesen.
Bleibt also nur die Frage nach der 250µs-Echtzeit-Sache.
Hi HaWe,
Bleibt also nur die Frage nach der 250µs-Echtzeit-Sache.
Heißt das, du must einzelne digitale Inputs alle 250µs (mit 4kHz) auswerten?
Das wird nur mühsam gelingen wegen des nicht so schnellen I2C-Bus Datentransfers (Default Bus Speed in der ArduIO-Lib 100 kHz, weil die PCF8591 nicht mehr können).
Wenn du auf den IRQ des IO-Expanders reagierst, könnte es vielleicht klappen, auf einen Pegelwechsel zeitnah zu reagieren, aber auch dann muss es ja noch einen Lesevorgang über I2C geben.
ALSO:
Die Auswertung von Dreh-Encodern ist eine No-Go-Aufgabe für einen I2C-IO-Expander!
Du solltest dazu immer einen IRQ-fähigen (oder ICP) Eingang des µCs nehmen!
Hi HaWe,
Heißt das, du must einzelne digitale Inputs alle 250µs (mit 4kHz) auswerten?
...
ALSO:
Die Auswertung von Dreh-Encodern ist eine No-Go-Aufgabe für einen I2C-IO-Expander!
Du solltest dazu immer einen IRQ-fähigen (oder ICP) Eingang des µCs nehmen!
ja, das stimmt mit den 250µs IRQ-Takt für die Drehencoder.
Bis jetzt mache ich es mit einem Huckepack-Arduino-Mega, der die Encoder selber on-board über eigene AVR-IRQs verwaltet samt "remote"-PID-Steuerung.
Was zwar in Echtzeit passiert, aber die direkte Kontrolle ist ntl dem Master entzogen.
Nur die lokalen Encoder mache ich ntl über lokale IRQ-Pins (in diesem Falle per DueTimer).
ps:
ich kann auf einem Due nur 6 Encoder-Motore verwalten, denn ich brauche pro Motor:
2 Encoder Pins,
3 H-Bridge-Pins pro Motor, davon 1 pwm-Pin, von dem jeder mit einem IRQ-Pin verschaltet ist
bestimmte Dpins von 2-13 (die einzigen, die auch pwm haben) sind aber bereits durch andere Geräte belegt
(z.B. der Encoder-Timer-IRQ-Pin selber, dann ein PS2 Keyboard mit einem eigenen IRQ-Pin, etc., etc., oder CS für SPI, oder durch einfache Taster (insg. 16) )
- ich brauche aber 12-14 Encoder-Motore, daher die notwendige Erweiterung, entweder per i2c-Mega-Slave oder eben per Muxer-Shield !
aber schade, dann bleibt doch nur die Mega-Huckepack-Methode...
Hi HaWe,
darf ich fragen, was du da für eine Hardware-Anwendung hast mit den vielen Encoder-Motoren, PS2 Keyboard und vielen Tastern?
Hallo miteinander!
ist scheint dem Ende zuzugehen. Ich bin gerade dabei die letzte Platine zu löten, dann kommt meine eigene.
15 Stunden lötarbeit, etwa 5m Lötzinn und das auflöten von 1208 Teilen auf 8 Platinen liegen hinter mir ;)
leider gibts noch zwei Probleme:
1. ein Zulieferer hat leider Engpässe, weswegen mir gut 10 doppelpinreihen, 20polig, fehlen. Daher liegen hier gerade vier fast fertige Platinen rum. Sobald diese Dinger da sind, mache ich alle an einem Tag fertig und schicke sie raus ;)
2. eine Platine macht noch recht seltsame Sachen mit den IO- und pwm-expandern. Da besteht nicht Handlungsbedarf!!!
Dirk hatte sie für Tests und hat sie mir heute zugeschickt, sollte Freitag da sein. Wir gecheckt, repariert und rausgeschickt :)
ich freue mich von den ersten Projekten zu hören ;)
schönen Abend noch!
TrainMen
04.12.2014, 16:19
Hi,
schön das es bald soweit ist. Fragen zu den Mosfet.
1. Der gesetzte Jumper JP_AD_UB gibt mir auf Mosfet UB Spannung, ohne Jumper 5V bzw was davon übrig bleibt ?
2. Bei Verwendung aller 8 Kanäle fehlen ja 6, sind das die 6 Pins neben den XBUS ?
3. Wenn es die 6 Pins neben den XBus sind, haben die auch UB Spannung wenn der Jumper JP_AD_UB nicht gesetzt ist.
HJi TrainMen,
1. der blau Jumper "JP_AD_UB legt lediglich die Batteriespannung (egal, ob vom XBUS kommend oder durch einen externen Akku) auf den ADC-Eingang #3 des ADC-Expanders #1 ;) Damit kann man also die Batterispannung messen, hat mit den MOSFETs nix zu tun. Sorry, dass der so nah an denen liegt. Das war ein Platzproblem. Wichtig in diesem Zusammenhang: Die Akkuspannung wird erst HINTER den MOSFETs, also auch HINTER der Resettable Fuse gemessen. Das soll es ermöglichen, ein Abschalten der Resettable (z.B. durch Kurzschluss der MOSFETs) zu detektieren. ABER: bitte absolute Vorsicht bei den MOSFETs! Die Resettable schaltet eher träge durch!
2. Der PWM hat ja 16 Kanäle. 8 davon gehen direkt auf die MOSFETs.
PWM0 -> P-Channel#1
PWM1 -> n-Channel#1
PWM2 -> P-Channel#2
PWM3 -> n-Channel#2
usw
Vier der anderen acht gehen auf die Board-LEDs:
PWM11 -> LED1
PWM10 -> LED2
PWM9 -> LED3
PWM8 -> LED4
Die letzten vier PWMs sind quasi frei (PWM12 bis PWM15). Drei davon (PWM13 bis 15) könnten aber auf Pins des Arduino gelegt werden, wenn die ArduIO einen Arduino emulieren soll. z.B. zum Betrieb eines Arduino-Clients ohne dass ein tatsächlicher Arduino angeschlossen ist. Ist nur so als Gag gedacht!
3. Welche 6 Pins neben dem XBUS meinst du? Auf jeden Fall: Nein, siehe 2.
Zwischen XBUS und der Spule leigen 6 Pins. Die drei auf XBUS-Seite sind die Int-Leitungen des RP6 #1, #2 und #3. Die anderen drei sind die Int-Leitungen der drei IO-Expander #2, #3 und #1. Die blauen Jumper verbinden diese bei bedarf, um auf dem RP6 auch interruptfähig auf IO-Änderungen auf dem ArduIO reagieren zu können.
Die anderen 6 Pins sind drei mal GND, drei mal UB.
Grüße
TrainMen
05.12.2014, 13:28
Hi fabqu,
ich gehe wohl irgendwie falsch an die Sache ran.
Ich frage mal anders. Ich will 3 Verbraucher schalten. Angefangen bei PWM 0,1,2 also 2 p-Channel ein n-Channel. Wo schliesse ich die 6 Kabel (3xPlus,3xMinus) von den Verbrauchern an und bitte schön langsam erklären.
und noch zu Punkt 1
bedeutet also mir steht nur UB an den MOSFETs bereit. OK. Das mit dem blauen Jumper JP_AD_UB ist doch egal wo der liegt, man muß eben nur wissen für was der ist. Weil wir mal darüber geredet hatten ob 5V oder UB dachte ich das der das ist.
und ich schieb mal noch eine Frage nach
der Expander #3 kann also auch ohne weiteres mit 5V betrieben werden ?
Hi,
bei den MOSFETs liegt auch ein 10pol wannenstecker. Dort sind gnd, +UB, die vier p-channels imd die vier n-channels dran. Pinbelegung liegt im downloadbereich des rn-artikels.
wenn du nur einfache pwms benötigst, kannst du die natürlich auch nehmen, wenn sie nicht zu viel verbrauchen (leds etc) es stehen ja 8 pwms zur verfügung, UND acht mosfet-kanäle.
Der io#3 ist für 3,3v ausgelegt, hat aber 5v-tolerante INPUTs. Die Outputs schaffen also nur 3,3V, aber es sollte nichts kaputt gehen, wenn man mal von außen 5v anlegt. Das ist damit gemeint.
TrainMen
05.12.2014, 19:44
Ich muß wirklich zu blöd sein um meine Frage so zu stellen das sie verstanden wird.
Ich weiß das die MOSFETs an den Wannenstecker hängen, Pinbelegung war mir auch klar. Deswegen ja meine Fragen.
Ich gehe von folgendem aus.
Strom fliesst von + nach -. Also hänge ich Verbraucher 1 Pluspol an p1(pin6) und Minuspol an GND und kann ihn ein und ausschalten.
Wäre das richtig ?
Verbraucher 2 Pluspol an +UB und Minuspol an n1 (pin3) alles in der Wanne
Verbraucher 3 Pluspol an p2(pin6) und Minuspol an ????? GND vom Wannenstecker ist doch belegt, kann ich jetzt den GND von den 6 neben den XBUS nehmen und im nächsten Fall wäre es ja der freie n2-Channel. kann ich dann Plus(UB) von den 6 neben den XBus nehmen.
Ok, dann kann ich also io#3 erst mal nicht benutzen.
Ja, im Prinzip stimmt das alles so ;) beachten muss man eben, welche spannungen v.a. Bei den p-channels dann am pin anliegen! Das sind keine 5v, sondern annähernd UB.
als beispiel, wie man mit den mosfets direkt (ohmsche) verbraucher schalten kann: schau die einfach die leds für jeden channel an. Die einen (für die p seite) sind mit vorwiderstand gegen gnd, die anderen gegen UB.
grüße
TrainMen
06.12.2014, 13:04
na Super endlich ist das geklärt. Danke Dir.
Um die Spannungen an den MOSFETs muß ich mir keine Sorgen machen, da fehlen sogar noch 1-2 Volt. Ich brauche da eigentlich volle 9Volt und so ca. 2A. Nur unter 6,5 läuft da nichts mehr.
Bei der Pinbelegung.pdf haben sich Fehler eingeschlichen. (5V - 3,3 V , Channelnummern)
und kannst Du die ÜbersichtArduIO nicht auch als pdf reinstellen.
Hi!
Danke dir, wird gleich mal berichtigt ;)
Am ArduIO kannst du bis zu 10V anschließen, aber dann ist schluss :) mehr bitte nicht.
Grüße
TrainMen
06.12.2014, 16:20
Am ArduIO kannst du bis zu 10V anschließen,
ja theoretisch, oder mit Netzteil. Mit dem 6er Akkupack komme ich auf knapp 8V wenn ich glück habe und dann habe ich ja noch Verlust an den Bauteilen. Mal sehen ob es klappt.
So, sieht ja zusammengebaut schon mal gut aus:
29496 29497
Die LEDs hinten habe ich an die Bumper-Platine der MultiIO mit angeschraubt, die vorderen mit einer Kunststoff-Unterlegscheibe an die vordere Bumperplatine mit dran. Angeschlossen sind sie aber noch nicht!
ArduIO liegt oben auf, über der MultiIO. Das wird aber evtl noch anders: eigentlich möchte ich die Antenne der M256 verlegen und dann die ArduIO über die M256 legen, um immer an alle IOs und ADCs der MultiIO und der ArduIO ran zu kommen.
Nun muss ich mich mal durch Dirk's Libs durcharbeiten.
Grüße
Hi fabqu,
das sieht ja schon mal interessant aus!
Wenn sie dann auch noch leuchten und blinken ... ;)
Softwaremäßig ist da auch noch Do-it-yourself gefragt: siehe hier (http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software#Demo_4)!
Übrigens: Wo kommt denn das Blaulicht hin?
Kommt aufs Dach, eh klar ;)
Deine Lib hab ich gerade durch, gefällt mir!
ich muss es nur noch portieren auf M256. Ist vielleicht was für die Weihnachtsferien ;)
Ich bin mir auch mit der Verkabelung noch nicht ganz sicher. Wollte gequetschte Wannenstecker nehmen, aber da ich zumindest GND auf allen 5 platinen brauche, wird das schwierig. Vielleicht doch eher löten oder crimpen?!
grüße
Ich bin mir auch mit der Verkabelung noch nicht ganz sicher. Wollte gequetschte Wannenstecker nehmen, aber da ich zumindest GND auf allen 5 platinen brauche, wird das schwierig. Vielleicht doch eher löten oder crimpen?!
Das habe ich auch noch vor mir.
Meine Planung:
- 10-pol Flachkabel so an den Wannenstecker anquetschen, dass es auf beiden Seiten heraus kommt (ca. 35-40 cm beidseits).
- Von der einen Seite des Flachkabels werden nur die Adern 2 bis 6 (Kabelstrang vorn) nach vorn (Frontscheinwerfer) geführt.
- Von der anderen Seite wird Ader 2 (GND) ein paar cm hinter dem Stecker abisoliert, dort wird eine 2. Einzelader (GND für Blaulicht) angelötet und die Stelle mit Schrumpfschlauch isoliert.
- Die Adern 1-3 und 5-7 der anderen Seite (Kabelstrang hinten) werden nach hinten (Hecklampen) geführt.
- Die Adern 1, 2 (die angelötete Einzelader) und 8 (Kabelstrang Blaulicht) werden zur Blaulichtplatine geführt.
- Die Platinen der Scheinwerfer vorn und der Hecklampen werden mit je 3 Adern 1:1 zwischen rechts und links verbunden. Nicht verbunden werden nur die gelben Blinklichter.
- Die Kabelstränge vorn und hinten werden auf EINER Seite (z.B. links) zur jeweils linken vorderen und hinteren Platine geführt und dort zusammen mit der Verbindung zur rechten Seite verlötet.
- Dabei wird das linke gelbe Blinklicht direkt angelötet, die Ader 6 zum rechten Blinklicht wird länger gelassen und vorn und hinten zur rechten Seite herüber geführt.
Das ist -glaube ich- die einfachste Variante.
Wenn an das so macht, kann man anstelle des Anlötens an die Platinchen auch Steckkontakte vorsehen.
TrainMen
15.12.2014, 15:37
Hi Leute,
meine Hardware ist zwar noch nicht da. Trotzdem habe ich schon einiges vorbereitet und die gesamten Kabel für die IO Ports und ADC gequetscht, gelötet und gecrimpt. Gegenüber den Wannenbuchsen habe ich an den Adern kleine stabile Drähtchen angelötet und mit Schrumpfschlauch überzogen. So kann ich jetzt die ganze Palette auf den Steckbrett verwenden. Sollte sich daraus was ergeben was sich zum Standard entwickelt wird neues Kabel genommen und entsprechend angefertigt.
Bei dem quetschen der Kabel sollte man darauf achten das jeweils ein Wannenstecker auf der Platine gedreht ist. Man sollte also beim jeweiligen Kabel , das Kabel einmal drehen und von der anderen Seite auflegen. So vermeidet man einen unschönen Bogen im Kabel.
Zu den Beleuchtungs Platinchen.
Wirklich ? Ihr denkt über solche Verkabelung nach. Das sieht für mich so aus als wenn ihr eine Dauerzustand herstellen wollt. Ich finde diese Platinchen für meinen Bot nicht wirklich sinnvoll. Mein BOT ist auf einem fremden Planeten und erkundet ihn, er wird bestimmt nicht blinken oder Brems (Halte) Lichter haben. Das ist kein Auto und nebenbei sehen die kleinen Platinchen bescheuert aus.
Ich muß allerdings gestehen das ich auch zum Anfang meiner RP6 Zeit solche Eingebung hatte.
Vorn und hinten 2x Rot und 2 Weiss jeweils aktiv welche Richtung er gefahren ist und wenn er stand hatte er 4x Rot.
Solange er Ruhig fährt und hier und da mal was ausweicht alles gut. Wenn er sich aber in "Bedrängnis" befand, Bsp. eine Ecke, sah das nicht mehr schön aus. Ständiges Blinken aller LEDs bis er da wieder raus war. Noch schlimmer stelle ich mir das vor wenn jetzt noch Blinker dazu kommen und das Blaulicht.
Ich habe mir deshalb entschieden einen festen Anbau nicht in betracht zu ziehen. Trotzdem will ich natürlich damit Spielen. Ich habe mir also eine Platine gelötet nur mit Steckern, also ohne Wannenstecker wo ich dann die Platinchen anschliessen kann, wie im Schaltplan angegeben. Plus noch 4 Stifte für Port 116 und 117 oder eben andere. Wenn die Platinchen dann da sind bekommen sie auch Stifte und dann mit gecrimten Kabeln verbunden.
Hi Trainmen,
meine Hardware ist zwar noch nicht da. Trotzdem habe ich schon einiges vorbereitet und die gesamten Kabel für die IO Ports und ADC gequetscht, gelötet und gecrimpt.
Das klingt nach perfekter Vorbereitung! Kannst du das evtl. mal fotografieren?
Wirklich ? Ihr denkt über solche Verkabelung nach. Das sieht für mich so aus als wenn ihr eine Dauerzustand herstellen wollt.
Bei mir mache ich die Beleuchtung auch nicht fest. Man kann die Platinchen später einfach abschrauben, den Stecker auf der ArduIO abziehen und weg ist das Ganze.
Mein BOT ist auf einem fremden Planeten und erkundet ihn, er wird bestimmt nicht blinken oder Brems (Halte) Lichter haben. Das ist kein Auto und nebenbei sehen die kleinen Platinchen bescheuert aus.
Darüber hatte ich noch gar nicht nachgedacht.
Bis z.B. auf dem Mars die erste Verkehrsampel steht, kann tatsächlich noch dauern!
Ich würde mich aber persönlich dafür einsetzen, dass die deutsche Straßenverkehrsordnung später auch dort gilt, damit unsere RP6-Fahrzeugbeleuchtung verwendet werden kann! ;)
TrainMen
16.12.2014, 11:07
Bis z.B. auf dem Mars die erste......
pah Mars, das macht mein BOT in einer Flashphase, der ist auf Riegel 7 gerade von den Volonen übernommen. Mit denen willst Du persönlich Reden ? Schade um unseren Guru ähh Dirk ähh Dich.;)
Kannst du das evtl. mal fotografieren?
kann ich
29505
Hi Trainmen,
die Kabel sehen ja gut aus, da kann man sicher alle Anschlüsse erreichen, auch wenn die ArduIO nicht die oberste Karte ist.
"Riegel 7"? "Volonen"? Ne, mit denen werden ich mich sicher nicht anlegen ...! :)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.