es gibt eine angepasste version auf der kommndozeile für arduino für den rpi.
Druckbare Version
es gibt eine angepasste version auf der kommndozeile für arduino für den rpi.
das erinnert so bischen an die RP6 zeiten (so 2010), wo das ganze kompilieren und flashen von der Kommandozeile aus erfolgte 🤨 - fand ich persönlich nicht so toll...
- - - Aktualisiert - - -
würde sich für die umschaltung der RX/TX paare so etwas eignen?
Das sehe ich ganz anders. Auch wenn ich kein AVR-Fan bin, ist der Mega2560 schon ziemlich kräftig. Nur mal so zum Vergleich, obwohl die "MIPS" nicht so wirklich vergleichbar sind: für den Mega werden 16 MIPS angegeben, für den ersten PC mit 8088 0,75 MIPS und für die ersten 386 2,15 MIPS (und da lief schonmal Windows drauf). Um deine Aufgaben zu schaffen hat der Mega ausreichend MIPS und eine Menge eingebaute Hardware zur Unterstützung.
Ich versuche mal ein Konzept zu skizzieren, wie das IMHO machbar ist. Es bietet sich an, mit den Steppern anzufangen. Wenn ich mich richtig erinnere, taktest du mit 4ms, wenn es mal etwas schneller sein soll, könnten es auch 2ms sein. Ich würde also einen Timerinterrupt mit ca. 2ms aufsetzen. Von diesem werden unabhängig von der Mainloop die Motoren bedient. Gleichzeitig werden alle Schalter und Kontakte eingelesen und entprellt. (Auf dem Arduino gibt es das eigentlich schon, dort werden z.B. die Millis bearbeitet, es wird aber vor dem User versteckt, mit ein Grund, daß ich kein Arduino-Fan bin).
Nun zu den US-Sensoren. Eigentlich sind sie ein schlechtes Design. Als sie mal erfunden wurden, waren sie reine Hardware bestehend aus Treiber, OP-Amps und Komparator. Die echte Auswertung musste der µC machen. Soweit war das in Ordnung. Der neueste Schaltplan, den ich gesehen habe, hat aber einen eigenen Prozessor drauf, der das eigentlich erledigen könnte. Um aber mit den alten Teilen kompatibel zu sein, erzeugt der die gleichen Signale wie sie. Aber auch dafür hat der Mega Unterstützung, den Input-Capture. Damit kann man das zeitliche Eintreten einer Taktflanke automatisch aufzeichnen, ohne den Prozessor zu blockieren. Es gibt davon mehrere Einheiten, damit kann man auch mehrere Sensoren, möglicherweise abwechselnd, laufen lassen.
Die Kommunikation lässt man ebenfalls aus ihren Interrupten laufen und kann sich in der Mainloop mit der Routenplanung beschäftigen oder PI auf hunderttausend Stellen ausrechnen.
Die Vorstellung, daß das Aufteilen der Aufgaben auf mehrere Prozessoren einem das Leben erleichtert, ist trügerisch. Am Ende ist der Aufwand, die µCs zu überwachen und zu synchronisieren und dabei kein Ereignis zu verpassen größer, als alles mit einem zu erledigen.
MfG Klebwax
also bei mir läuft das nach eva prinzip, kommunikation kommt noch vor dem a also ein evka :D
praxis erfahrung in 2 wochen auf dem 2560, mit 6 x hsr04, mal schauen.
Du kannst auch noch anders vorgehen (hab ich auch schon gemacht): den Arduino direkt vom Pi aus mit der Arduino-IDE programmieren.
Das funktioniert einwandfrei, auch wenn complilieren ein _bisschen_ länger dauert, als gewohnt.
Selbst ohne ein Display am Pi geht das: ich benutze (aus Bequemlichkeit) einfach VNC- somit kann ich gemütlich am Laptop sitzen, und via WLAN auf dem Pi die IDE starten, und so bedienen als liefe sie auf dem Laptop.
ich glaube meine probleme beruhen nicht auf der ungenügenden rechenpower des mega2560, sondern am nicht funktionierendem timing der abläufe "fahren" und "orten"...
leuchtet absolut ein, ich hatte (und habe teilweise immer noch) schwierigkeiten die kontrolle der stepper allein so zu machen, dass es einigermassen läuft, anfangs ohne eine lib, dann mit der accelstepper lib und zuletzt mit einem mix von beidem. Stepper allein würden nun laufen, im prinzip so, wie ich es wollte...
Ich bin dann, was die weitergehenden funktionen der roboters betrifft, einem anderen konzept gefolgt, der von Rabenauge beschrieben wurde:
Ich verwende einen timer:
und "sekundenaufgaben"Code:void timer()
{
aktuelle_timer_millis = millis();
if (aktuelle_timer_millis - vergangene_timer_millis >= interval_timer) // halbe sekunde um
{
vergangene_timer_millis = aktuelle_timer_millis;
halbe_tick ++; // 500ms sind um
if (halbe_tick > 2) // hier ist eine volle Sekunde vorbei
{
halbe_tick = 1; // wechselt alle halbe Sekunde
sekunden_tick++;// wechselt jede volle Sekunde
Serial.println(sekunden_tick);
}
if (sekunden_tick >= 11) // mehr brauchen wir nicht
{
sekunden_tick = 0;
}
}
}
die beide in der loop() laufen...Code:void sekunden_aufgaben()
{
if (sekunden_tick == 1)
{
// spannung_messung_gemacht = 0;
}
if ((sekunden_tick == 2) && (spannung_messung_gemacht == 0))
{
// spannung_messen_chip();
// spannung_messen_3();
}
if (sekunden_tick == 3)
{
ping_zwei_sensoren_gemacht = 0;
// myservo.write(35);
}
if ((sekunden_tick == 4) && (ping_zwei_sensoren_gemacht == 0))
{
sonar_2_sensoren ();
start_1();
}
if (sekunden_tick == 5)
{
}
if (sekunden_tick == 6)
{
ping_zwei_sensoren_gemacht = 0;
// myservo.write(70);
}
if ((sekunden_tick == 7) && (ping_zwei_sensoren_gemacht == 0))
{
sonar_2_sensoren ();
start_1();
}
if (sekunden_tick == 8)
{
// hindernis_vorh_mitte_entprellt();
}
if (sekunden_tick == 9)
{
ping_zwei_sensoren_gemacht = 0;
// myservo.write(0);
}
if ((sekunden_tick == 10) && (ping_zwei_sensoren_gemacht == 0))
{
sonar_2_sensoren ();
start_1();
}
if (sekunden_tick == 11)
{
}
}
auch die habe ich schon verwendet, ohne dass sich die stepper (allerdings eine andere art stepper als die NEMA17 und die customstepper lib) sich mit irgendetwas anderem ins gehege gekommen wären....
bei der verwendung der timerfunktion und der sekundenaufgaben dachte ich es wäre (natürlich durch zwei controler und I2C etwas verkompliziert) relativ einfach ein paar werte von einem mc zu generieren (die ortungsabstände) um sie vom anderen controler zu lesen und auszuwerten...
Was die ISR's betrifft, bin ich trotz mehrere kurze anläufe immer wieder davor zurückgeschreckt, wenn sich nur eine andere (vielleicht auch nur vermeintlich einfachere) methode der lösung angeboten habe...
ich möchte mein letztes statement etwas ergänzen:
natürlich weiss ich um die vorteile der ISR routinen, habe auch versucht mich in die problematik in verschiedenen tutorials und anderen webseiten einzulesen, bin dabei aber nicht wirklich weitergekommen :-( ...
Es wäre vielleicht ein versuch wert, wenn jemand mit mir zusammen versuchen würde, die problematik schritt für schritt durchzuarbeiten, an codebeispielen, fragen und erklärungen...
Insofern sollte mein letzte äusserung hier im thread keine rigorose ablehnung in richtung ISR sein. Den thread würde das sicher bereichern...
Gab es da nicht diese TimerOne (oder so ähnlich)-Bibliothek für derartiges?
Bisher komme ich im XP2 glänzend ohne solche Interrupts aus, ich benutze lediglich für die Odometer welche (PinChange).
Es gibt viele Links zu einfachen Abhandlungen, für Einsteiger in Arduino. Man muss sich dann tatsächlich auch mal damit auseinandersetzen und das ausprobieren und durcharbeiten. Zum Beispiel diesen Inhalt hier: http://diwo.bq.com/de/interrupts-mit-arduino-benutzen/
Auf DIWO ist es ein sehr anschauliches Beispiel, das jeder ausprobieren kann. Einfacher gehts eigentlich nicht mehr. Dort steht genau, was, warum und wo.
Die ISR muss verankert werden. Eine Erklärung, im Detail, gibts hier, für attachInterrupt: https://www.arduino.cc/reference/de/...tachinterrupt/
MfG
Es geht nicht um Vorteile. Es geht eigentlich nicht anders. Beispiel Stepper: wenn du ihn mit 1kHz (1ms) taktest, musst du dich (oder eher der µC) alle Millisekunde um ihn kümmern. Kein anderer Programmteil darf dich länger als eine knappe Millisekunde davon ablenken. In der AccelStepper wird das so gemacht und in der Beschreibung heisst das dann so:
Und hier nachmal etwas zu "called frequently":Zitat:
The run() function must be called frequently until the motor is in the desired position, after which time run() will do nothing.
4000 Schritte heißt 250µs pro Schritt. Wenn der Stepper so schnell laufen soll, darf in loop() nichts gemacht werden, was länger als diese 250µs dauert. Mit Sicherheit darf also kein "dummer" US-Sensor ausgelesen oder ein delay() verwendet werden. Aber auch jede andere Funktion Funktion ist problematisch. Und weil ich gerade die AccelStepper Doku offen habe:Zitat:
The fastest motor speed that can be reliably supported is about 4000 steps per second at a clock frequency of 16 MHz on Arduino such as Uno etc.
Hier wird darauf hingewiesen, daß schon das Berechnen der Quadratwurzel zeitlich ein Problem ist. Das wird man zwar nicht oft machen, so daß es einem menschlichen Beobachter nicht auffällt, für die Stepper stellt aber schon die einmalige Benutzung ein Problem dar. Es gibt natürlich handgefeilte Systeme, die mit diesen Bedingungen leben können wie 3D Drucker oder CNC-Systeme mit grbl. Da kann man dann nachträglich kaum noch etwas hinzufügen.Zitat:
Calling setAcceleration() is expensive, since it requires a square root to be calculated.
Nun kann man natürlich sagen, für deinen Outdoor muß alles nicht so schnell gehen. Das ist sicher richtig, verschleiert aber das grundsätzliche Problem. Wenn jetzt zu den Steppern, US-Sensoren noch weitere wie Lidar und GPS etc. hinzukommen und weitere Aufgaben wie die Kommunikation mit z.B. einer Fernbedienung, Telemetrie usw. zu erledigen sind, ist es wieder da.
Die Lösung, die üblich ist und für die Unterstützung in die µC eingebaut sind heißt Interrupt. Alle anderen Konzepte, wie z.B. bei den Transputern haben sich nicht durchgesetzt. Die "alten" Prozessoren wie Z80 oder 8088 brauchten noch einen externen Baustein zur Unterstützung, den fand man auf fast jedem Prozessorboard.
Die Idee finde ich gut. Nur kann ich mit Codebeispielen schlecht dienen. Ich habe keine AVR und keine Arduinos sonder PIC, vorzugsweise PIC24 und programmiere die in C. Das Konzept "Interrupt" ist zwar auf allen gleich, aber in C kommt es nicht vor. Um es trotzdem aus C nutzen zu können, hat da jeder Compiler seine Sonderlocken gestrikt. Die erledigen zwar alle das Gleiche, aber mit unterschiedlichen Formulierungen. So kann ich also keine fehlerfreien Beispiele für einen Arduino liefern, da ich sie nicht testen kann. Das betrifft aber eigentlich nur zwei-drei Zeilen am Anfang des Handlers. Im übrigen kann ich aber meinen Beitrag zum Einsatz von Interrupten liefern. Es ist am Ende nicht wirklich kompliziert.
MfG Klebwax
ich habe mir die ideen und vorschläge angeschaut und versucht sie nachzuvollziehen. Das ergebnis sieht so aus:
und es funktioniert :-) meine furcht vor den ISR's war wohl übertrieben :-) - natürlich habe ich den einfachsten weg gewählt, die idee mit der lib (danke Rabenauge) und die ausführlichen beschreibungen des geschehens bei der verwendung von der accelstepper lib (danke Klebwachs) haben mir sehr geholfen. Ich habe ganz sicher nicht die ganze tiefe der ISR-problematik damit erfasst, nur ein bischen an der oberfläche gekratzt, für den moment ist mein problem des stotternden antriebs gelöst und ich kann mich anderen kleinigkeiten wieder zuwenden...Code:hinzu:
#include <TimerOne.h>
im setup hinzu:
Timer1.initialize(4000);
Timer1.attachInterrupt(stepper_isr);
in loop entfällt:
stepper_VL.run();
stepper_HL.run();
stepper_VR.run();
stepper_HR.run();
isr funktion hinzu:
void stepper_isr(void)
{
stepper_VL.run();
stepper_HL.run();
stepper_VR.run();
stepper_HR.run();
}
danke nochmals :-)
hallo,
letzter stand heute - trockenlauf für die horizontale und vertikale hindernis-erkennung - die verfizierung in "echt" folgt in den nächsten tagen...
hab mir anregungen geholt beim Rabenauge und hier
heute habe ich die 5 PCB's bekommen, für insgesamt 12€, das teuerste war das porto, 10€
Anhang 35000
also ich mache weiter - ein grösserer umbau steht an...
möchte jemand eine von den 4 übrigen platinen? (gegen porto)...
so sieht die bestückte platine aus (noch ohne steppertreiber)
Anhang 35001
das hier alle unbestückten pinns det atmega ausgeführt sind ist super, bei der RAMPS platine musste ich die mühsam anlöten. War ja auch nicht für meine anwendung gedacht, sondern für einen 3D drucker, so gesehen war das auch ok...
Wenn du das Ding fertig hast, erzähl gerne mal etwas darüber.
So für "überübernächstes..." schwirrt mir da eine Sache im Kopf rum, die auch zwei bis drei solche Stepper bekommen sollte.
Von daher wären Erfahrungen mit dem Ding, zum nachschlagen (momentan komm ich zu überhaupt nix, ausser ein bisschen an nem RC-Car basteln) allemal interessant.
fertig ist das ding noch 100jahre nicht, aber ein bischen was kann ich schon sagen:
Anhang 35002 Anhang 35003
zum vergleich die RAMPS platine und die neue, von How_to_mechatronics.
- den spannungswandler links von der platine braucht man nicht, da nutze ich nur noch die stützpunkte, der fliegt also demnächst auch raus
- die platine hat genügend 12 und 5V anschlusspins, auch für zusätzlich hardware
- der anschluss für das HC05 modul ist etwas zu eng an die steppertreiber platziert, aber er ist immerhin da und funktioniert
- die platine ist jetzt mit den 8825 steppertreiberrn bestückt. das bedeutet, dass die stepper besser ziehen, brauchen aber auch mehr strom
- an der gemeinsammen zuleitung der 12V zu platine sieht man schon, dass dickere leitungen notwendig werden
Frage - gibt es sowas (dickere vorgefertigte kabel) für die NEMA17?
- die stepper laufen leiser, die software muss ich aber noch an meine bedürfnisse anpassen. Auch die app am smartphone
- es gibt auch noch software die mit dem NRF 24L01 modul (es gibt auch dafür einen steckplatz) läuft, konnte ich noch nicht ausprobieren...
Die DRV8825 hab ich im Drucker- bin sehr zufrieden damit.
Es gibt zwar inzwischen deutlich leisere, aber die ziehn auch nicht so viel...
Warum brauchst du dickere Kabel?
Haben die 3D-Drucker auch nicht...
Wichtig ist, dass die Stromzufuhr (zur Platine) ausreichend dimensioniert ist.
so ganz verstehe ich es auch nicht. Schon mit den 4988 wurden die zuleitungen zu der platine (einfache jumperwire, querschnitt 0,05mm²) zu warm (und weich), wurden dann verdoppelt, dann ging es.
Mit den 8825 waren auch die doppelten jumperwire zu wenig und ich habe dann litze aus einem 220V kabel genommen (querschnitt 0.8mm²), das war dann ok.
Die zuleitungen zu den motoren (original zu den steppern gehörig - querschnitt 0,13mm²) waren mit den 4988 ok, mit den 8825 wurden sie auch (meiner meinung nach) zu warm....
In allen fällen waren die potis auf den treibern so eingestellt, dass sich die stepper etwas mehr als "gerade so" drehten... Es ist wohl aber auch so, dass die stepper mit den originalzuleitungen in einem 3d-drucker eine ganz andere last (nämlich fast keine) zu bewegen haben, das sind hier immerhin fast 3kg...
Nun, Drähte mit 0,0xmm² sind höchstens als Signalleitungen zu gebrauchen. Jede Versorgung sollte stärker sein, sonst hat man einen merkbaren Spannungsabfall. Ich benutze 0,22 Schaltlitze (hab gerade noch mal auf der Rolle nachgelesen) oder für Motore 0,5 oder mehr, so 2*0,75 Lautsprecherlitze. Wenn es so an die 5-10A kommt, hab ich auch 2*2,5 oder 2*4,0 aus der Car-Hifi Ecke. Auch die Leitungen von alten Computernetzteilen benutze ich gerne.
Das reicht als Einstellung nicht ganz. Wenn deine Betriebsspannung im Vergleich zur Nennspannung des Motors zu niedrig ist, kann die Stromregelung nicht arbeiten. Es fließt immer der Maximalstrom durch die Spulen, den der Motor bei dieser Betriebsspannung und der gegebenen Drehzahl so ziehen kann. Wenn man den Strom nicht auf dem Scope ansehen kann und dabei den Chopper bemerkt, gibt es noch eine andere Möglichkeit das zu überprüfen. Erhöht man die Betriebsspannung, darf sich das Verhalten des Motors nicht verändern. Dann regelt der Chopper und hält den Spulenstrom konstant. Gleichzeitig sollte der Betriebsstrom sinken, da die Leistung konstant bleibt. So als Anhaltswert: die Betriebsspannung sollte so das zwei, eher drei bis fünffache der Motornennspannung betragen. Dann hat der Chopper Luft zum Regeln und man erreicht ein hohes Drehmoment.
MfG Klebwax
ich hab jetzt mal die daten zum NEMA 17 hier:
----------------------------------------------
Schrittwinkel 1,8°
Schritte pro Umdrehung 200
Nennsstrom 1,7A/Phase
Nennspannung 3,7V
Haltemoment 4000g*cm
Rastmoment 220g*cm
Rotorträgheit 54g*cm2
Spulenwiderstand 2,0 Ohm/Phase
Gewicht 240g
Motorlänge (L Max) 40mm
Wellendurchmesser 5mm
--------------------------------------------
Der akkuspannung (also die betriebsspannung) kann je nach ladung zwischen 9 und 12V schwanken, würde heissen (schlimmstenfalls 3,7Vx2,4), die minimalen voraussetzung für das funktionieren der stromregler wäre also gegeben....
Das mit der erhöhung der betriebsspannung - wie soll ich das mit nur einem akku machen? Step-up zwischenschalten?
Ich glaub ich hab schon erwähnt, dass ich einen HM203 im regal stehen hab, net anzusehen, viel gemacht hab ich damit noch nicht. Wie müsste ich den strom damit an dem stepper messen?
EDIT: auf der platine für die steppertreiber ist ein spannungsteiler vorgesehen mit dem man die akkuspannung messen kann, die man dann entweder per seriellen monitor oder auf das LCD display ausgeben kann. Könnte man etwas ähnliches für die strommessung machen und die werte auch so ausgeben?
Auf keinen Fall. Das fängt mit dem Wirkungsgrad an. Wenn du Glück hast, bekommst zu bei einem Step-Up im praktischen Betrieb 70-80% Wirkungsgrad hin. Da kannst du auch gleich ne Akkuzelle mehr nehmen, kommt auf das Gleiche raus. Außerdem sind Regler für Motoren problematisch, da die Ströme stark variieren und sich beim Schiebebetrieb sogar umkehren können. Aber so schlecht sieht das bei dir nicht aus, ich würds so lassen.
Kann ich nicht wirklich nachvollziehen, das Scope ist das erste was ich einschalte, wenn ich an einer Schaltung arbeite, meisst noch vor dem Lötkolben. Mindestens mal ein Blick auf die Versorgung und auch alle Signale ansehen. In fast jedem Datenblatt findet man Timingdiagramme, die muß man in der eigenen Schaltung nachvollziehen können.
Strom kann man mit einem Scope nicht messen, nur Spannung. Man muß den Strom durch einen (Shunt)Widerstand leiten und die Spannung über ihm messen. Dies macht der DRV auch so, die entsprechenden Widerstände sind also da.
Anhang 35016
Im Schaltbild von Pololu sind es R2 und R3. Die gehen von ISENA/B nach Masse und darüber solltest du einen dem Strom proportionale Spannung messen können.
Du könntest auch so 1Ω in den Anschluß einer der Spulen einschleifen und daran die Spannung messen. Aber Vorsicht, der Masseclip des Scopes ist geerdet, deine Schaltung muß also Massefrei sein. Ein Anschluß an einen Rechner darf es nicht geben. Ich hab beides nicht gemacht, daher "sollte". Ich habe eine Stromzange, die klemme ich einfach um ein Kabel und kann galvanisch getrennt Strom messen.
Hätte ich die nicht, würde ich an die Shunts auf dem Modul gehen. Ein Stück Schaltdraht an den Widerstand löten und daran die Tastspitze. Das Ganze dann am Labornetzteil mit unterschiedlichen Betriebsspannungen und unterschiedlichen Stepraten. Dabei den Motor mit der Hand abbremsen, um zu sehen ob er Schritte verliert. Da kann man auch fühlen, wie sich das auf die Temperatur von Treiber, Motor und Kabel auswirkt. Die meissten Steppern, die ich so habe, sind irgendwo ausgebaut und ich habe keine Daten. Aber mit ein wenig experimentieren hab ich schnell rausgefunden, mit welcher Mindestspannung und welchem Maximalstrom man sie betreiben kann.
MfG Klebwax
ich hab jetzt noch etwas zur einstellung der stromsteuerung gefunden. danach wird die spannung zwischen masse und dem rotor des steuerpoti gemessen und am poti nach dieser formel berechnet und eingestellt:
Bei DRV8825
einzustellende spannung = nennstrom für zwei phasen x 0.7 / 2 V = (2x1.7) x 0.7 /2V = 3.4x0,7/2 = 1,19V
so habe ich es jetzt gemacht, scheint ok zu sein, mal sehen wie warm die stepper und die zuleitungen werden wenn es eine weile läuft...
EDIT: bei der einstellung wird das ganze nur über den USB anschluss des arduino versorgt, alles andere ist abgeklemmt...
zwei dinge gibts es zu berichten:
- die ENB pins sind bei der platine nicht herausgeführt, warum auch immer, das habe ich nachgeholt, will ja schliesslich auch mal die stepper abschalten können
-zweitens:
ich habe die gasdichtheit für meine - amateurhafte - basteleien in frage gestellt. Die damit einhergehende qualität der verbindung ist aber auch für den amateurbereich unabdingbar, zumindest immer dann, wenn grössere ströme fliessen. Sonst sieht es so aus:
Anhang 35038
bin also reumütig zum löten zurückgekehrt, bei der anzahl der verbindungen die ich insgesamt machen muss, krieg ich die erfahrung fürs anständige crimpen nicht zusammen :-(
Kann ich nicht wirklich nachvollziehen. Wenn du die fertigen Module nimmst, ob DRV oder den A4988, ist Enable auf Pin 8. Hier ist ein Link, unten ist dort der Schaltplan. Und das funktioniert bei mir auch. Oder hast du was eigenes?
Das kann aber auch daran liegen, daß diese Pfostenverbinder für größere Ströme nicht gebaut sind. Bei mir rangieren die, ohne jetzt extra nachzulesen, im Bereich bis max. 1A, kurzzeitig auch mal drüber. Eigentlich sind sie für Datenleitungen. Wenn ich über Pfostenstecker mehr fließen lassen muß, z.B. weil ich Flachkabel verwende, dann schalte ich zwei oder mehr Kontakte parallel. Das Kabel wird dann etwas breiter, der Stecker braucht mehr Kontakte, aber ich habe nur ein Kabel. Für die Versorgung von Antriebsmotoren, wenn es nicht gerade ein Spielzeug oder ein PC-Lüfter ist, würde ich sie nie in Betracht ziehen. Ich verwende da gerne 6,3 mm Flachstecker wie im Auto. Die Steckerfahnen kosten fast nichts und lassen sich gut im eigen Layout unterbringen. Die Steckhülsen gibt es in tausend Varianten für ziemlich jeden Kabelquerschnitt. Dazu gibt es schon lange ganz billige Crimpzangen. Ich hab auch noch eine Sammlung von Kabeln aus Haushaltsgeräten wie Waschmaschinen mit einem oder zwei fertigen Kontakten. Die haben günstige Querschnitte und man spart sich die eine oder andere Crimpung. Wenn alles nicht passt, nutze ich Schraubklemmen.
Anhang 35039
MfG Klebwax
Was mir gerade noch so einfällt:
Wie hast du denn die Litzen überhaupt in die kleinen Kontakte bekommen? Das Kabel passt mit seiner Isolierung doch nicht wirklich in den Stecker. 0,8² ist dafür viel zu dick.
das sind normale DRV8825, die haben natürlich alle pins, allerdings werden die ENB pins auf der aufnahmeplatine nicht zum controler weitergeleitet, der von "HowToMechatronics" , der die platine entworfen hat, hat sich wahrscheinlich gedacht, dass er sie nicht braucht (sind wohl von haus aus immer auf HIGH)
die flachbandkabel zwischen den NEMA17 und den 8825 sind wohl auch keine "starkstromkabel" und es sind auch die dupont stifte (oder beim stepper sogar noch dünner). Beim 3d-drucker reicht das wohl auch...
so:
Anhang 35040 Anhang 35041
das habe ich auch nicht vor dem kauf der leiterplatte bedacht: die microstep pins waren auch nicht herausgeführt, liess sich aber beheben:
Anhang 35049
so kann ich die verschiedenen microstep einstellungen per software - ohne gross jumper setzen die müssen - testen...
auch die neuen kühlkörper sind inzwischen da:
Anhang 35050
die installation von raspbian stretch auf dem zero hat funktioniert, auch die installation der arduino IDE (version 2:1.0.5) klappte. Der code lässt sich per wifi, also vom stationärem PC aus auf dem zero kompilieren und auch auf den outdoor über ein usb kabel hochladen :-)
Anhang 35058
Eine bearbeitung über die gleiche verbindungsstrecke halte ich für schwierig, wenn nicht unmöglich, die auflösung ist wirklich gering und das handling der IDE über tastatur und maus am PC lässt einige wünsche unerfüllt, das war aber auch nicht das ziel...
Die geänderten dateien können auf einem anderen weg (wifi) zum zero übertragen werden und dann auf den mega geflasht werden...
Anhang 35059
hier noch einmal mein universal-test-board mit dem zero...
Eine frage beschäftigt mich noch: Es wird evtl. mehr als nur den mega an microcontrolern auf dem outdoor geben. Ich kann dann keine USB kabel zum falshen umstecken, dann wäre ja auch der zero überflüssig :-)
wie mache ich das mit dem flashen auf jeweils einen anderen empfänger?
- die im USB kabel zuständigen leitungen sind ja nur zwei...
- weil die microcontroler ja auch auf einem anderem weg mit strom versorgt werden...
- eine gemeinsame leitung und die andere über unterschiedliche pins eines der microcontroler "schaltbar"?
Wie machst du das mit dem "fern-Compilieren"?
Greifst du über VNC auf den Bildschirm des Raspi zu?
Dann lässt sich das Problem mit der Auflösung ganz einfach beheben, imdem du dem Raspi nen grösseren Bildschirm einstellst.
So hab ich das bei den Zeros auch gemacht...funktioniert einwandfrei.
Das andere Problem: evtl. nen USB-Verteiler benutzen?
Dann müsstest du doch in der IDE auswählen können, welcher USB-Port "bearbeitet" werden soll.
ja (VNC) und ja, die auflösung 800x600 reicht schon mal zum einigermassen arbeiten :-)
das geht leider nicht. Ich habe einen USB verteiler an die USB microbuchse angeschlossen (also NICHT an die wo noch PWR mit dransteht) und es erscheint auch bei mehreren angeschlossenen controlern nur die ttyUSB0, also die zuerst angechlossene schnittstelle...
Jetzt läuft sogar die version 1.8.12 auf dem zero, also die gleiche, wie ich sie sonst auch verwende, allerdings - wie schon erwartet :-( - mit hindernissen. Sie startet immer nur einmal. Erst wenn ich den bei der initialisierung erzeugten ordner ".arduino15" lösche, startet sie wieder, allerdings inklusive der gesamten initialisierung, die einstellungen sind also weg :-(
ganz matt kann ich mich noch daran erinnern, dass bei der installation der hinweis darauf kam, dass irgendein symlink nicht hat angelegt werden können - kann das die ursache sein?
Das klingt nach nen Link-Problem, ja.
Hast du die Installation mit Root-Rechten ausgeführt?
Das mit dem Hub muss eigentlich funktionieren-es gibt sogar extra welche für den Zero, siehe hier z.B.: https://www.raspberry-pi-geek.de/aus...en-raspi-zero/
Aber möglich wärs, dass die Geräte beim erstenmal nicht automatisch erkannt werden.
Im übrigen kann der Pi auch noch grössere Bildschirme.
ja, auch
Code:pi:
Adding desktop shortcut, menu item and file associations for Arduino IDE...
rm: das Entfernen von '/usr/local/bin/arduino' ist nicht möglich: Keine Berechtigung
Removing symlink failed. Hope that's OK. If not then rerun as root with sudo.
rm: das Entfernen von '/usr/local/bin/arduino' ist nicht möglich: Keine Berechtigung
Removing symlink failed. Hope that's OK. If not then rerun as root with sudo.
ln: die symbolische Verknüpfung '/usr/local/bin/arduino' konnte nicht angelegt werden: Die Datei existiert bereits
Adding symlink failed. Hope that's OK. If not then rerun as root with sudo.
done!
----------------------
sudo:
pi@raspberrypi:~ $ cd Arduino
pi@raspberrypi:~/Arduino $ cd IDE
pi@raspberrypi:~/Arduino/IDE $ cd arduino-1.8.12
pi@raspberrypi:~/Arduino/IDE/arduino-1.8.12 $ sudo sh install.sh
Adding desktop shortcut, menu item and file associations for Arduino IDE...
touch: '/root/.local/share/applications/mimeapps.list' kann nicht berührt werden: Datei oder Verzeichnis nicht gefunden
/usr/bin/xdg-mime: 803: /usr/bin/xdg-mime: cannot create /root/.local/share/applications/mimeapps.list.new: Directory nonexistent
done!
----------------------
das lag am defekten controler :-(
ja, aber dann verdeckt das fenster alles andere... :-(
*ächz
Zwei Stunden stochern im Nebel, aber:Ich habs geschafft.
Auf einem meiner Zeros läuft nun die Arduino 1.8.9.
Was hab ich gemacht:
Zuerst mal in der Konsole den Dateimanager mit Root-Rechten gestartet:
Dann einen Sketchordner in /home/pi angelegt, meiner heisst Sketchbuch.Code:sudo pcmanfm
Nun hab ich mir in der Konsole root-rechte besorgt:
Und dann:Code:sudo su
Die Fehlermeldungen kommen trotzdem, aber das ist egal (das scheint eher unwichtiges Zeug zu sein, da wird von Sachen gefaselt, die nich gelöscht werden können, weil sie gar nicht existieren-wen juckts).Code:cd ~
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz
tar -xvf arduino-1.8.9-linuxarm.tar.xz
cd arduino-1.8.9
sudo ./install.sh
Ggf. musst du noch die Verknüpfung bearbeiten, indem du sie auf deine arduino in /home/pi/arduino-1.8.9 zeigen lässt.
Bei mir funktionierts, hab auch probehalber mal nen Uno bespielt- läuft.
ok, Rabenauge, danke für deine mühe :-)
die IDE startet aber nur unter root als user, oder?
EDIT: es ist jetzt so, dass ich das raspberry-menü um den eintrag "sudo arduino" ergänzen kann. Dann startet die 1.8.9, die nach deinem "muster" installiert wurde. So weit so gut, allerdings kann diese version dann nicht auf die seriellen schnittstellen zugreifen, die der arme user "pi" da einstöpselt :-)
Nein, meine startet ganz normal- eben noch mal probiert (und der Pi war seit der Bastelei gestern stromlos, der hat sich also auch nix gemerkt).
Probehalber eben noch mal den Uno angestöpselt und geflasht...geht einwandfrei.
Kontrollier mal folgendes: deine IDE liegt in /home/pi(pi nur, wenn du den Standardnamen nicht geändert hast, ansosten den), und auch wichtig:
Der Eintrag der .desktop-Datei.
Ich häng dir nen Screenshot an, wie der bei mir aussieht.
Da siehst du auch: da wird nix mit sudo aufgerufen.
Ach, was ich gestern vergessen hatte: du musst natürlich in der IDE unter Einstellungen dann auch den vorher angelegten Sketchbuch-Ordner (der sollte auch unter /home/pi liegen) noch einstellen.
Super, wenns geklappt hat.
Nun besorgst du dir noch VNC fürs Tablet und dann kannst du dich unten an die Elbe setzen, und mal schnell Firmware für deinen Bot schreiben, und gleich testen, hehe.
Das war bei mir übrigens der Hauptgrund, das mal zu machen (gemacht hatte ich es jetzt wegen deinen Problemen, aber irgendwann hätt ich das sowieso, mein Zero soll ja im XP2 landen), ich hab einfach keine Lust, draussen dauernd den Laptop mitzuschleppen.
Oft muss man ja nur irgendwelche Parameter anpassen, dann geht das mit dem workflow ohne weiteres, wenn man ne gescheite Tastatur fürs Pad hat.
Und auch noch komplett kabellos.
das kabellose hat mich schon immer gereizt. Das erste projekt war die induktive ladestation für den RP6 (das war schon vor fast 10 jahre), die habe ich dann für alle anderen - mit - verwendet...
VNC für android habe ich schon, allerdings auf dem smartphone, zugriff auf den zero ist möglich, allerdings ist die anzeige auf dem smartphone schon mickrig. Ich glaube da würde sich schon eine kombination aus VNC, webserver und smartphone/tablet besser machen. So wie auf den ESP32 z.b.
Wäre sowas auf dem zero möglich?