modularer Aufbau der Steuerung von Robotern
Hallo zusammen,
ich möchte folgendes diskutieren und (optimal) aus dem Ergebnis neue bzw. erweiterte Standards gewinnen:
Bisher werden individuelle Roboter häufig auf Basis eines Prozessor-Eval-Board aufgebaut, was immer ein mehr oder weniger grosser Kompromiss darstellt.
Ich möchte anregen, einzelne logische Baugruppen zu definieren und im Detail bis zur Serienreife zu planen, die jeweils zueinander passen (kompatible Stecker und Protokolle) und so zu individuellen Robotern zusammengesetzt werden können.
Jedes dieser Module sollte eine gewisse "Eigenintelligenz" besitzen, um vom Hauptprozessor lediglich komplexe Befehle, die dann abgearbeitet werden (für den Antrieb z.B. zu bestimmten Koordinaten zu fahren oder für einen Greifer, den Gegenstand an Pos. x zu greifen bzw. an Pos. y abzusetzen).
Ziel ist, den Hauptprozessor zu entlasten.
Um die zu definierenden Standards diskutieren zu können (eine Grundlage, was man bauen will, auch wenns heute technisch nicht mach- und bezahlbar ist) schlage ich als Zielmodell einen humanoiden Roboter vor, d.h. ein künstliches Sketett, was in etwa dem Menschen nachempfunden ist.
Spontan fallen mir folgende Themen (zum Standardisieren) ein:
- Energieversorgung (Akku-Ladeschaltung, Buck Boost Converter (Schaltnetzteil), Redundanz, welche Spannungen, ...)
- Energieversorgungsnetz (welche Farben, welcher Leiterquerschnitt, welche Steckverbinder, welche Steckerbelegung, ...)
- Datenbus (I2C DeviceIDs und Stecker sind bereits definiert)
- 2-Achsen Schrittmotorsteuerung High-Power für Antrieb
- 3-Achsen Schrittmotorsteuerung Mid-Power für Greifarm
- 2-Achsen Servosteuerung High-Power für Antrieb
- 3-Achsen Servosteuerung Mid-Power für Greifarm
- Hinderniserkennung (Ultraschall, IR-Laser Reflektion, ...)
- Positionserkennung (GPS oder besser Galileo, ein "wo bin ich" Device)
- Gleichgewichtserkennung / Beschleunigungssensoren
- Hauptprozessor
...
Beispielsweise könnte das Gleichgewichtssystem ein autonomes Gerät am I2C Bus sein, welches sich nur ums Gleichgewicht kümmert.
Die Gewichte/Belastungen der Extremitäten lassen sich an der Stromaufnahme der jeweiligen Antriebe (per I2C) abfragen, daraus ergibt sich ein mehr oder weniger vollständiges Bild der gesamten Kraft- und Gewichtverteilung.
Was denkt ihr?
Ralph
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat von lemmings
Aber: wenn man z.B. für die Stromversorgung ein 40V Netz definiert, woraus sich dann alle Verbraucher ihren Strom per Schaltregler holen - im Vergleich zu einem 12V Netz würde der Strom nur 1/3 betragen ==> niedrigerer Querschnitt bei gleicher Leistung, dadurch weniger Gewicht.
Zitat:
Zitat von Gock
Nicht ganz: der meiste Strom wird ja in den Motoren verbraucht, die nach Deinen Angaben Schrittmotoren sind und die benötigen den gleichen Strom, egal wie hoch die Spannung ist...
:-)
Da der Schrittmotor bei entsprechender Drehzahl (Bspw. 500 RPM) Frequenzen von einigen 100khz bis zu ein paar Mhz "normal" sind ist der Schrittmotor auch eine nennenswerte Induktivität.
wenn ich das maximale Drehmoment abverlange muss ich auch den Strom gewährleisten.
Bei der Frequenz kann der induktive Widerstand schon stark angestiegen sein. wenn ich das Drehmoment will muss ich mit der Spannung rauf.
Ich brauche die hohe Spannung letztlich als Reserve um die hohen Ströme hinzubekommen.
Die Spannung sollte nicht über 50V liegen (ich will keine "Vorsicht Hochspannung" Warnschilder ;-) ), d.h. wenn eine Li-Ion Zelle eine Ladeschluss-Spannung von 4.2 V hat und ich 12 Zellen habe lande ich bei maximal 50V bis minimal 12 x 2.5V (Schlussentladespannung) 30V => alle angeschlossenen Module, die nennenswert viel Energie brauchen, müssten sich aus dem ungeregelten Netz bedienen.
Der technische Aufwand ist ein zusätzlicher Schaltregler, d.h. eine Spule, eine Diode, ein paar R's und C's und ein Microcontroller mit Analog-Input und PWM-Output.
Durch die insgesamt höhere Spannung habe ich entsprechend niedrigere Ströme bei gleicher Leistung, dadurch brauche ich weniger Leitungsquerschnitt, was wieder gut für's Gewicht ist.
"Nach Oben" würde ich die Grenze unterhalb von dem setzen, was als "tödlich" angsehen wird... und das sind (glaube ich, müsste man mal recherchieren :-) ) 60V.
Heisst: wenig Gewicht haben wollen erfordert dünne Leitungen
dünne Leitungen bedeutet niedrige Ströme, bei gleicher Leistung bedeutet das hohe Spannung.
Je höher die Spannung, desto leichter wird das Modell.
Der Preis dafür ist ein intelligenter Regler an jedem Verbraucher, der nur das aus dem Netz entnimmt, was gebraucht wird.
Damit sind Konstrukte mit Längsreglern wie dem 7805, die die restliche Energie in Wärme umsetzen, grundsätzlich nicht wünschenswert.
Der Roboter soll ja alles andere sein als eine mobile Heizung, die sich autonom bewegt.
... obwohl... ein warmer Roboter, der dir an kalten Wintertagen folgt, um dich zu wärmen hat auch etwas :-)
[/quote]
Zitat:
Zitat von lemmings
Es gibt heute so viele schöne integrierte Schaltungen ...
Zitat:
Zitat von Gock
Also ehrlich gesagt sind Schrittmotoren für ein solches Projekt nicht unbedingt das gelbe vom Ei.
Da gibt es heute auch besseres mit höheren Leistungsdichten, zB Piezomotoren oder SynchronServomotoren. Aber das alles steht und fällt mit Größe, Kosten und Komplexität des Projekts sowie Getriebeauslegung und anderer Hardwarefestlegungen. Wahrscheinlich aber werden die Kosten massgeblich.
je nach Anwendung kann man doch das perfekte Modul für den jeweiligen Antrieb designen.
was braucht ein Servo-Antrieb?
einen DC-Motor, ein Getriebe, ein Potentiometer, 2 Gabellichtschranken, ein Längswiderstand, um die Stromaufnahme zu regeln.
eine halbe "Full Bridge" (d.h. 4 MosFETs oder 4 PWM-Pins für die Gates), ein Getriebe (das ist halt mechanisch), einen ADC-Eingang für's Poti, 2 I/O-Pins (oder, wenn ich die LEDs in den Gabellichtschranken pulsen will, um die Stromaufnahme zu reduzieren noch 2 Pins mehr) und noch einen ADC für die Stromregelung
4xPWM, 2x ADC, 4x standard-I/O.
Dazu noch SDA&SCL für I²C-Bus.
ein ATtiny24A wäre perfekt.
Das Modul könnte man auf einer 3x3cm oder max 4x4cm Platine (siehe Bild) unterbringen.
Je nachdem, wie intelligent man den ATtiny programmiert (I²C Protokoll, logische Funktionen wie "drehe 3200 1/100 Umdrehungen" verteilt über eine Zeit von 5,3 Sekunden mit maximal 2cm/s Beschleunigung, ...) kann man das Teil dann als universelle Steuerung für Servos in den Baukasten legen. und 4x4cm ist nicht wirklich gross... den meisten Platz auf der Platine brauchen die Stecker und die Leistungs-MosFETs
Zitat:
Zitat von lemmings
Der ULN2803 gehört gar nicht auf's Prozessorboard, der gehört zusammen mit einem ATTiny24A auf ein 8-Bit Open Collector I/O Modul.
Zitat:
Zitat von Gock
Das hängt definitv vom Anwendungszweck ab und kann so pauschal nicht gesagt werden. Du hast da offenbar schon was spezielles im Kopf...
Ja und auch wieder Nein... Für kleine Aufbauten mag das durchaus OK sein, die jeweiligen Prozessor-Eval-Boards einzusetzten oder etwas universelles zu verwenden, bei dem 1001 Peripherie-Geräte mit auf dem Board sind. sobald das aber etwas komplexer wird ist dieses Vorgehen, alles mit einem prozessor zu machen , immer nur ein schlechter kompromiss.
Soll ein Roboter denn durch die Anzahl der I/O-Pins des Prozessors bestimmt sein?
Ich will weg von den Kompromissen. das geht nur individuell mit speziellen Lösungen, die dann aber wieder für sich eigenständige und funktionsfähige module sind.
Zitat:
Zitat von lemmings
I²C Bus => ATTiny => Darlington (so wie PCF8574A, der ATTiny kostet etwa das Gleiche, ist aber frei was die I²C ID angeht).
Zitat:
Zitat von Gock
Dieser Tiny kann aber nicht viel, er hat nicht mal einen 16BitCounter onboard, geschweige denn ein komplettes TWI Modul.
Du brauchst ja auch gar nicht mehr. für ein simples I/O-Modul reicht das völlig.
[quote="Gock"]
Da kommt Dein Tyny sehr schnell an seine Grenzen.
/quote]
Simmt, aber wie ich's oben schon beschrieben habe reichen die mageren Funktionen der ATtiny's für die kleinen Dinge aus.
Die ATtiny's sind billig und unkompliziert.
Ob man dann den oder einen anderen Chip und aus der Automotive-Serie oder sonstwoher nimmt spielt doch keine Rolle.
Welcher Bus verwendet wird sollte auch kein allzugrosses Problem darstellen... I²C und CAN sind nicht so sehr verschieden - zumindest nicht elektrisch....
ein Projekt kann ja auch ein Farb-LCD mit Grafik entwickeln, wo dann das LCD auch nebenbei mit anderer Software auch als ein I²C Monitor/Analyzer eingesetzt werden könnte... oder eine LED-Balkenanzeige "I²C - Load" im 8-Bit I/O Modul ;-)
Ralph