Ich habe den ATmega2560 schon voll ausgereizt. Alle PWM-Ausgänge und Timer werden benutzt und das Ding ist auch irgendwie ruckelig manchmal. Es gibt zwar den AT91SAM3X8E von Atmel. Damit würden wahrscheinlich alle Bibliotheken von Arduino und Drittanbietern weiterhin funktionieren. Doch die haben auch begrenzte Ausgänge. Es geht darum dass ich bis 64 oder sogar vielleicht mehr Servos auf einmal variantenreich ansteuern will, und zwar mit riesigen Datenmengen. Da helfen auch keine ttl serial Baudraten. Das muss schon USB-Geschwindigkeit haben. Solche Dinger wie PCA9685 kommen auch nicht in Frage, weil die zu störanfällig sind. Ich will schon schön sauber alle Servos direkt an einen Mikrokontroller anschließen. Wenn ich auf STM32F767 umsteige, wie problematisch kann es zum Beispiel mit Bibliotheken von Arduino und von Drittanbietern werden? Ich nutze immer noch Arduino IDE und habe diese Anleitung gefunden: https://www.youtube.com/watch?v=SFFwSNiripk damit könnte man mit Arduino IDE STM32F767 flashen. Ausprobiert habe ich noch nicht. Kann das überhaupt gutgehen? Was ist der Unterschied zwischen https://www.amazon.de/dp/B072MMZZBK/ref=asc_df_B072MMZZBK58615498/ und https://www.banggood.com/STM32F767-Development-Board-Cortex-M7-Small-System-Board-STM32F767IGT6-STM32-p-1420406.html ?
Einfach im Web mal suchen ... Ich fand das sofort : https://www.instructables.com/id/Quick-Start-to-STM-Nucleo-on-Arduino-IDE https://github.com/stm32duino/Arduino_Core_STM32 Was die Libraries betrifft - keine Ahnung. Wenn es nicht anders geht, eben selber schreiben.
Helmut V. schrieb: > Ich habe den ATmega2560 schon voll ausgereizt. Glaub ich nicht! Helmut V. schrieb: > Es geht darum dass ich bis 64 > oder sogar vielleicht mehr Servos auf einmal variantenreich ansteuern > will, und zwar mit riesigen Datenmengen. Soso....glaub ich auch nicht. Helmut V. schrieb: > Da helfen auch keine ttl serial > Baudraten. Das muss schon USB-Geschwindigkeit haben. Für eine Handvoll Servos?! Glaub ich nicht. Helmut V. schrieb: > Solche Dinger wie > PCA9685 kommen auch nicht in Frage, weil die zu störanfällig sind. Sind sie nicht! Wenn die Probleme machen liegst an deiner Software und/oder Hardware. Helmut V. schrieb: > Was ist der Unterschied zwischen > https://www.amazon.de/dp/B072MMZZBK/ref=asc_df_B072MMZZBK58615498/ > und > https://www.banggood.com/STM32F767-Development-Board-Cortex-M7-Small-System-Board-STM32F767IGT6-STM32-p-1420406.html > ? Für dich Keiner - du wirst mit Beiden nicht klar kommen.
:
Bearbeitet durch User
Harry L. schrieb: > Für dich Keiner - du wirst mit Beiden nicht klar kommen. Zitat: " Autor: Harry L. (mysth) Datum: 18.02.2019 21:48 War ja vollkommen klar, daß jetzt die Klugscheisser wieder anfangen Haare zu spalten..... Das Forum ist sowas von im Arsch! Macht echt keinen Spaß mehr. " Helmut V. schrieb: > Was ist der Unterschied zwischen > https://www.amazon.de/dp/B072MMZZBK/ref=asc_df_B072MMZZBK58615498/ > und > https://www.banggood.com/STM32F767-Development-Board-Cortex-M7-Small-System-Board-STM32F767IGT6-STM32-p-1420406.html > ? Hole Dir das Nucleo-Board und fange an. Aber nicht bei diesen dubiosen Anbietern. Zum Preisvergleich: bei Farnell < € 25,-- inkl. USt. Aber vielleicht fasst Du erst einmal Deine Anforderungen zusammen und prüfst, was Du eigentlich brauchst. Alles, wo Arduino drauf steht, hat doch recht eingeschränkten Nutzen.
Beitrag #5747363 wurde von einem Moderator gelöscht.
Beitrag #5747371 wurde von einem Moderator gelöscht.
Helmut V. schrieb: > Das muss schon USB-Geschwindigkeit haben. Solche Dinger wie > PCA9685 kommen auch nicht in Frage, weil die zu störanfällig sind. Wenns da schon am Hardwaredesign scheitert, würde ich nicht gleich vom gütmütigen ATMEGA auf ein solches Geschoß umsteigen. Der ist nämlich um Größenordnungen anspruchsvoller, was zum Beispiel die Stromversorgung angeht. Wenn du schon auf STM32 umsteigst, dann nimm doch ein auf deine Anwendung passendes Derivat, nicht die unnötigerweise so hochgejubelten F4 und F7. Viel Motorcontrol und dergleichen hört sich nach einer Aufgabe für einen Mixed-Signal-Derivate aus der STM32F3-Serie an. Und ja, die Rechenleistung reicht. Wenns auf dem ATMEGA ruckelt, dann flutscht es auf dem Cortex-M4 mit 10MHz. Möglicherweise reicht dir auch ein F0? Das solltes du dir gut überlegen. Auch das wäre mehr als ein ATMEGA. Geh dazu auf die webseite von ST: https://www.st.com/en/microcontrollers-microprocessors/stm32f3-series.html?querycriteria=productId=SS1576 Klopp die Anforderungen in den Selektor und pick dir aus den passenden Derivaten das modernste heraus. Der STM32F4xx ist schon recht alt und hat sehr angegraute Peripherie, weshalb ihn heute nur Leute nehmen, die sich von den F4-Jubelpersern im Forum überzeugen lassen. Den F7 nehmen üblicherweise Leute, die Dinge wie eine GUI auf einem großen GLCD brauchen. Für kleinere Projekte ist er unnötig komplex. Schöne Beispiele für richtig "runde" Pakete: STM32F072, STM32F303 Natürlich bekommst du für diese beiden auch die beliebgen Discovery-Boards. Die F4-Jubelperser wissen das nur nicht ;-)
Wenn du mit Arduino Framework programmieren willst, solltest du dich vorher informieren, welche STM32 Modelle von 3rd Party Arduino Cores und 3rd Party Libraries gut unterstützt werden. Das Problem ist, dass noch lange nicht für jeden ARM Controller ein guter Core verfügbar ist. Und zahlreiche 3rd party Libraries funktionieren nur auf ATmega Mikrocontrollern oder generell 8bit, weil deren Entwickler die 32bit Welt einfach nicht auf dem Schirm haben. Das wirst du ganz besonders merken, wenn du mehr als nur digitalWrite() und digitalRead() nutzen willst. Und das ist hier ja der Fall. Um Servos anzusteuern braucht man Timer. Ein Timer mit zwei Compare Registern reicht aus, um 10 Servos anzusteuern. Das heisst, die Timer des kleinen ATmega168 genügen bereits für mehr Servos, als der Chip Pins hat. Falls Dich das überrascht, guck Dir dieses Beispiel an: http://stefanfrings.de/servocontroller/index.html Du musst nicht zwingend alle 64 Mikrocontroller an einen einzigen Chip hängen, oder doch?
Helmut V. schrieb: > Was ist der Unterschied zwischen > https://www.amazon.de/dp/B072MMZZBK/ref=asc_df_B072MMZZBK58615498/ > und > https://www.banggood.com/STM32F767-Development-Board-Cortex-M7-Small-System-Board-STM32F767IGT6-STM32-p-1420406.html > ? Ist das nicht offensichtlich? Das eine ist ein Evaluation Kit von ST, mit Programmieradapter (der auch einen USB-UART enthält) und Ethernet Anschluss. Das andere ist ein Minimalboard. Bist du sicher, dass du mit so vielen Pins dicht auf kleinem Raum noch ordentlich arbeiten kannst? Zur Programmierung kann ich Dir nur dringend die "System Workbench for STM32" oder das "Atollic Studio" empfehlen, wenn es denn kostenlose Software sein muss. Die Kombination aus Arduino Framework mit diesem Chip wirkt auf mich wie Brötchen holen mit einem Scania Truck. Irgendwie geht das schon, macht aber nicht glücklich.
m.n. schrieb: > Hole Dir das Nucleo-Board und fange an. Aber nicht bei diesen dubiosen > Anbietern. Witzig, der Anbieter ist die Firma ST selbst.
> Du musst nicht zwingend alle 64 Mikrocontroller > an einen einzigen Chip hängen, oder doch? Ich meinte natürlich "Motoren" nicht Mikrocontroller.
Brezensalzer schrieb: > Der ist nämlich um Größenordnungen anspruchsvoller, was zum Beispiel die > Stromversorgung angeht. Der braucht ggf. 100 mA mehr als ein AVR8. Was ist denn daran anspruchsvoller? Brezensalzer schrieb: > Schöne Beispiele für richtig "runde" Pakete: STM32F072, STM32F303 > Natürlich bekommst du für diese beiden auch die beliebgen > Discovery-Boards. Deinen "runden" Paketen fehlen die Ecken und die vielen IO-Leitungen, die durch zumeist unnütze Gimmicks verplempert werden. Besonders schlimm sind die Discovery-Boards, die noch einen Arduino-Steckplatz haben. Da kann man zwar irgendwelche "Schiehlts" raufstecken, um Relais' klappern zu lassen, aber einen richtigen Nährwert hat das nicht. Brezensalzer schrieb: > Den F7 nehmen üblicherweise Leute, die Dinge > wie eine GUI auf einem großen GLCD brauchen. Na Du kennst Dich ja aus. F7 und H7 nehme ich, weil die schön viel RAM auf dem Chip haben und im Speziellen viel günstiger als ein F407 sind. Bin ich jetzt auch Jubelperser?
Stefanus F. schrieb: > Um Servos anzusteuern braucht man Timer. Nicht unbedingt. Die ganz Harten würden das auch locker ohne Timer hinbekommen können. Aber klar: mit Timer wird's deutlich einfacher. Wie auch immer: die Rechenleistung eines AVR8 genügt in JEDEM Fall, um so viele Servos anzusteuern, wie er Ausgangspins besitzt. Die Frage ist nur die erreichbare Positioniergenauigkeit. Das hängt vom Systemtakt ab (das ist übrigens auch bei der Benutzung von Timern der Fall). Wenn die Servos handelsübliche Modellbau-Sevos sein sollen, kann jeder AVR8 locker so viele von denen im Rahmen von deren Positioniergenauigkeit ansteuern, wie er GPIOs besitzt. Es gibt allerdings auch hochwertige Servos mit Positioniergenauigkeiten weit jenseits der üblichen Modellbau-Servos. Bei den Dingern (und obendrein hoher Stückzahl) könnte ein AVR8 dann allerdings tatsächlich in's Schwitzen geraten. Allerdings: ein STM32 sieht in diesem Anwendungsfall kein bissel mehr Licht. Der kann zwar mehr Genauigkeit, aber nur für einzelne Servos. Solange die Timerkanäle halt reichen. Danach wird's Bein dicke, da ist dann schnell wieder eine Lösung auf AVR8-Basis im Vorteil...
Also in der Servo Library ist das so programmiert dass pro Timer acht Servos verwaltbar sind. Noch mehr Servos pro Timer ist glaub ich zu eng. AtMega2560 hat 5 Timer, Timer0 ist reserviert für delay(), die anderen 4 Timer kann man manipulieren. Angeschlossen habe ich da 16 Servos (verbraucht 2 Timerobjekte) und 8 Motoren, verbraucht auch zwei Timerobjekte obwohl nur 8 Motoren, weil die andere PWM Modulation brauchen. Mehr Servos und Motoren kann ich da nicht anschließen. Es geht um 64 Servos die nicht einfach nur von A nach B bewegen sondern sehr schnell in Echtzeit durch ControlState-Befehl von Midi gesteuert werden. Deswegen ist die Leistung von AVR8 problematisch auf Dauer. Ok, ich glaube das mit STM ist zu mühsam. Wenn ich auf Due (AVR32) umsteige, dann wäre das eleganter, weil der ist nicht nur schneller sondern der hat so wie ich das sehe, 9 Timerobjekte? Also könnte man da auch pro Timerobjekt 8 Servos anschließen, also 56 Servos oder 64 Servos oder ?
:
Bearbeitet durch User
Helmut V. schrieb: > Also in der Servo Library ist das so programmiert dass pro Timer acht > Servos verwaltbar sind. Noch mehr Servos pro Timer ist glaub ich zu eng. > AtMega2560 hat 5 Timer, Schau dir mal "Serial Bus Servo" an, e.g: https://de.aliexpress.com/wholesale?catId=0&initiative_id=SB_20190223093056&SearchText=serial+bus+servo Damit hast du kein Skalierungsproblem mehr. leo
Dieser Bus ist aber ttl und kann nur bis 115200 baudrate oder ? ich will aber 2 millionen baudrate
Helmut V. schrieb: > Ich habe den ATmega2560 schon voll ausgereizt... > mit Bibliotheken von Arduino Ganz bestimmt nicht.
Helmut V. schrieb: > ich will aber 2 millionen baudrate Du willst ca. 100.000 Servo-Aktualisierungen / Sek - Interessant. leo
leo schrieb: > Helmut V. schrieb: > >> ich will aber 2 millionen baudrate > > Du willst ca. 100.000 Servo-Aktualisierungen / Sek - Interessant. > > leo Von 64 Servos können pro Servo nur 1562 / Sek angesprochen werden. Und eigentlich müssen 1562 noch weiter reduziert werden, weil es um 16bit Auflösung geht.
Helmut V. schrieb: > ich will aber 2 millionen baudrate BTW: dir ist schon klar, dass du mit diesen Servos Weg/Zeit-Befehle sendest und keine einzelnen Impulse? leo
Ja die Zeit-Befehle kann ich nicht senden, weil die in Echtzeit gesteuert werden. Also ich will 60fps-100fps Befehle pro Servo senden.
Helmut V. schrieb: > Ja die Zeit-Befehle kann ich nicht senden, weil die in Echtzeit > gesteuert werden. > > Also ich will 60fps-100fps Befehle pro Servo senden. Ja dann. Es waere fein, wenn so relevante Information gleich vorliegen wuerde. Ein Ueberblick ueber das Projekt hilft auch oft. leo
Helmut V. schrieb: > Also ich will 60fps-100fps Befehle pro Servo senden. Bei einer servoüblichen Periodendauer von 20msec pro Puls? Nicht in diesem Universum. Und welche Servos bitte sollen denn so schnell reagieren?
Das hört sich doch nach einer Aufgabe für einen kleinen FPGA an. Pins hat der mehr als genug und über 64 Timer lacht der nur. Mit einem FTDI oder kleinen Micro an USB und fertig.
FPGA? Klingt nach noch mehr Stress. Naja ok, ich versuch erst mal mit AVR32. Meine Frage: AVR32 arbeiten ja bekanntlich mit 3.3v. Ich müsste für jeden Servo für den Signal Logic Level Converter einbauen ?
Helmut V. schrieb: > Also in der Servo Library ist das so programmiert dass pro Timer acht > Servos verwaltbar sind. Noch mehr Servos pro Timer ist glaub ich zu eng. Wie gesagt gehen 10 Servos pro Timer, jeweils 5 pro Compare-Register. Ich habe das in meinem Beispiel anhand des ATtin2313 und ATttiny26 gezeigt. > Es geht um 64 Servos Dann brauchst du 4 Timer und genügend I/O Pins. Egal ob AVR, PIC oder ARM Controller. Schau Dir mal die XMega Controller an, die sind mit Timern sehr großzügig ausgestattet. Zur Not kann man das auch auch alles per Software (anstatt PWM Timer) mit einem einzigen regelmässigen Timer-Interrupt mit 10kHz umsetzen, wenn denn der µC dazu schnell genug ist. Hier kämen dann für mich die Xmega oder STM32 in Frage. Ob ATmega dafür schnell genug sind, bin ich nicht sicher. Letztendlich wundere ich mich allerdings darüber, dass du die naheliegendste und bewährte Lösung abgelehnt hast: PC9685. Die bekommst du spottbillig als Modul für 16 Servos. Nimm vier dieser Module und fertig ist die Laube. Zuverlässig, einfach und du hast deinen Lieblings-Mikrocontroller komplett frei für die interessantere Aufgaben. Glaube mir, der Chip ist nicht unzuverlässig.
Helmut V. schrieb: > Also ich will 60fps-100fps Befehle pro Servo senden. Was sind denn das für Servos? Ich dachte wir reden hier die ganze Zeit über R/C Modellbau Produkte, auf die trifft das aber nicht zu. Dort sind 50 Impulse pro Sekunde Standard und die tatsächliche Reaktion ist noch langsamer. Wenn du einem Servo 100 PPM Impulse pro Sekunde senden willst, dann müssen diese logischerweise kürzer als 1ms sein. Ausserdem brauchst dann wohl für jeden Servo einen eigenen Timer, da zwischen den Impulsen nicht genug Zeit bleibt, um sich anderen Servos zu widmen. leo schrieb: > Es waere fein, wenn so relevante Information gleich vorliegen wuerde. Allerdings > 3,3V > Ich müsste für jeden Servo für den Signal Logic Level Converter einbauen? Nicht bei R/C Modellbau Servos. Aber was du für Servos verwendest, weiss ja niemand hier ausser du.
Also genommen habe ich früher diesen hier: https://de.aliexpress.com/item/16-Channel-12-bit-PWM-Servo-Driver-I2C-interface-PCA9685-for-arduino-or-Raspberry-pi-shield/32710084048.html Es gab Signalstörungen. Wenn ich acht MG995 Servos und acht billige 9g Servos anschließe, dann werden die 9g servos gestört. Der Signal am Oszi zeigt sehr verzerrt und gestört an. Deswegen nehme ich PCA9685 nicht mehr. Oder lag es an Chinaqualität? Werden AT91SAM3X8E und ATmega 32u4 als XMega-Prozessoren bezeichnet? Ich google immer danach aber finde die Zusammenhänge nicht so direkt. Ich verwende MG996R Orignal TowerPro und diese billigen 9g servos. Die später durch teure Hitec Servos ersetzt werden sollen. Diese Servos nehmen auch Signal in Spannung von 3.3V an ?
:
Bearbeitet durch User
Helmut V. schrieb: > Werden AT91SAM3X8E und ATmega 32u4 als XMega-Prozessoren bezeichnet? Der SAM3X (Arduino Due) ist ein ARM Cortex-M3, der ATmega32u4 ist, wie der Name schon sagt, ein ATmega, sowie der 2560.
Helmut V. schrieb: > Es gab Signalstörungen. Du hattest sicher Probleme mit deiner Stromversorgung. Ich kenne den Schaltplan dieser Platinen nicht. Die Stromversorgung der Servos gehört von der der Stromversorgung des IC getrennt - ich hoffe das ist dort so. Und natürlich können sich Servos gegenseitig stören, so ist das halt bei Motoren. Du brauchst ein potentes Netzteil, dass für eine stabile Versorgungsspannung sorgt. Die Leitungsführung zwischen den Baufruppen spielt dabei auch eine wesentliche Rolle. Mit einem Oszilloskop kannst du solche Probleme untersuchen. > Werden AT91SAM3X8E und ATmega 32u4 als XMega-Prozessoren bezeichnet? Sein, der AT92SAM ist ein "SAM" und der 32u4 ist ein Atmega. Ein gängiger Xmega Controller wäre zum Beispiel der Xmega128D3. > Ich verwende MG996R Orignal TowerPro > Diese Servos nehmen auch Signal in Spannung von 3.3V an ? Alle Servos, die ich bisher in den Fingern hatte, lassen sich problemlos mit 3,3V ansteuern. Auf der Webseite von towerpro.com findet man dazu leider keine Angabe. Bei dem Servo wird eine Spitzen-Stromaufnahme von 1400mA angegeben. Wenn du davon 64 Stück gleichzeitig ansteuerst bist du schon bei 100A. Tust du natürlich nicht. Schon die Ruhestromaufnahme beträgt 170mA pro Servo, das sind 2,7A pro Servo-Controller, zuzüglich dem Arbeitsstrom aktiver Servos. Dafür braucht man dicke Kabel. Eventuell hilft es auch, die Leiterbahnen der Stromversorgung auf dem Servo-Controller durch Drähte zu verstärken. Zum Steuersignal macht der Hersteller auch keine Angabe, also musst du vom Standard ausgehen: 50 Impulse pro Sekunde mit je 1-2ms breite. In einer 1/100 Sekunde (nach der Reaktionszeit!) erreicht er maximal 4° Drehung, das liegt im Bereich der üblichen Wackel-Toleranz des Getriebes. Dieser Servo passt nicht zu deiner Anforderung nach 60-100 Befehlen pro Sekunde. Ich denke, überhaupt kein Modellbau Servo wird dazu auch nur annähernd passen. Du wirst deine Anfordern herabsetzen müssen oder auf völlig andere Produkte aus der Industrie setzen müssen. Die haben aber auch andere Schnittstellen zur Steuerung. > diese billigen 9g servos meinst du das ernst? Das ist keine brauchbare Angabe.
Vielen Dank für die Infos. Okay, vielleicht ist da was dran mit Stromversorgung. Da habe ich damals nicht so auf die Kabeldicke so geachtet. Nehmt ihr ein Entwicklerboard auf dem ein XMega drauf ist und wenn ja, welche? Oder meintet ihr jetzt wirklich eigene Platinen entwickeln mit Xmega128D3 ? Von ATXMEGA128A1 sehe ich einige Entwicklerboards.
Helmut V. schrieb: > Nehmt ihr ein Entwicklerboard auf dem ein XMega drauf ist und wenn ja, > welche? Ich verwende gerne Arduino Nano Boards, aber auch lose Mikrocontroller. Für dein Problem spielt das keine Rolle. Was du aber bedenken solltest: Schon 0,5V Spannungsabfall an einer GND Leitung löst Fehlfunktionen aus, weil der LOW Pegel dann nicht mehr eindeutig LOW ist.
Helmut V. schrieb: > Okay, vielleicht ist da was dran mit > Stromversorgung. Da habe ich damals nicht so auf die Kabeldicke so > geachtet. Ja, klar, aber die PCF sind dann schuld. Hier sind wieder Koniferen am würgen... Was soll Dir eigentlich die Daten für 100fps für die 64 Servos liefern? Ein PC mit Windows?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.