Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller mit mehreren PWMs


von Rachid (Gast)


Lesenswert?

Hallo allerseits,

ich brauche für eine Anendung einen Mikrocontroller, mit dem man 18 PWMs 
erzeugen kann. Ich habe schon überall gesucht und keinen gefunden. Mit 
den PWMs möchte ich 6 Bürstenlose Gleichstrommotoren betreiben. Ich 
währe euch für jede Hilfe dankbar. Notfalls lasse ich auch mehrere 
Mikrocontroller synchron laufen. Es währe super, wenn ihr mir welche 
empfiehlt, mit den ihr erfahrung hattet.

: Verschoben durch Moderator
von Εrnst B. (ernst)


Lesenswert?

Rachid schrieb:
> Notfalls lasse ich auch mehrere
> Mikrocontroller synchron laufen

Den Weg würde ich gehen. Pro Motor einen µC, Sollwertvorgabe z.B. über 
gemeinsamen i²c-Bus.

von Ralf S. (spacedog) Benutzerseite


Lesenswert?


von (prx) A. K. (prx)


Lesenswert?

Ralf Schwarz schrieb:

> Soft-PWM

Bei einer Motorsteuerung, bei der jede Software-Malaise sofort die 
Hardware husten lässt?

von Ralf S. (spacedog) Benutzerseite


Lesenswert?

A. K. schrieb:
> Bei einer Motorsteuerung, bei der jede Software-Malaise sofort die
> Hardware husten lässt?

Sind wir denn kleine Mädchen? ;-)

von Rachid (Gast)


Lesenswert?

Danke für die Antorten. Die Softwarelösung möchte ich meiden, da die PWM 
Signale zu ungenau waren. Einen Mikrocontroller pro Motor muss ich wohl 
notfalls nehmen. Da ich jedoch sehr wenig Platz für die Elektronik habe, 
währe es nicht schlecht, wenn ich etas mehr reduziere. Außerdem habe ich 
noch keine Erfahrung mit der Synchronisation von Mikrocontrollern. Ist 
es ohne weiteres möglich, sieben Mikrocontroller synchron laufen zu 
lassen? Der zusätzliche Mikrocontroller ist dann für den Hauptprogramm.

von Klaus W. (mfgkw)


Lesenswert?


von Εrnst B. (ernst)


Lesenswert?

Rachid schrieb:
> Ist
> es ohne weiteres möglich, sieben Mikrocontroller synchron laufen zu
> lassen

Die müssen doch garnicht synchron laufen. Jeder kümmert sich um seinen 
Motor und sonst nix.

Die Steuerdaten über I2C oder UART oder SPI erfordern auch nicht, dass 
die µCs mit gleichem Takt o.Ä. laufen.

von Rachid (Gast)


Lesenswert?

Die Motoren sind von einander abhängig. Jeder Motor bewegt jeweils ein 
Gelenk eines Schlangenartigen Roboters. Jedes Gelenk ist vom Winkel des 
Anderen Gelenks abhängig.

von Εrnst B. (ernst)


Lesenswert?

Dann brauchst du eher Schrittmotoren. Oder Servos.

Oder hast du Getriebe + Encoder an den BLDC-Motoren?
in dem Fall: jeder µC kriegt vom Master einen "Soll-Winkel" angegeben, 
und fährt diesen selbständig an.

=> keine Synchronität nötig.

von Rachid (Gast)


Lesenswert?

Ich habe an jedem Motor einen Winkelsensor. An den Motoren und an der 
Mechanik kann ich nichts mehr ändern. Mein Plan war es, die sechs Winkel 
im Hauptprogramm zu ermitteln anschließend die Sollwinkel. Danach 
Manipuliere ich die PWMs so, dass die Sollposition immer erreicht wird.
enn ich für jeden Motor einen Mikrocontroller benutze, muss ich jedem 
Mikrocontroller die sollpsition übergeben und ständig aktualisieren.

von Εrnst B. (ernst)


Lesenswert?

Genau das würde ich in die "Pro Gelenk" µC auslagern. Also: Jeder der 6 
µCs hat seinen Winkelsensor und seinen Motor und kümmert sich um beides.

alles an einen Bus, der Zentral-µC kann bei jedem Gelenk den aktuellen 
Winkel abfragen, und ihm einen neuen Soll-Winkel vorgeben (ggfs: 
Drehrichtung, Winkelgeschwindigkeit, ...), und muss sich um die 
Ansteuer-Details keine Gedanken machen.

Vorteil:
Modulares System, leicht auf mehr oder weniger Gelenke anpassbar
und bei Hardwarewechsel (auf Servos oder Schrittmotoren) müssen nur die 
Gelenk-µCs angepasst werden.

von Rachid (Gast)


Lesenswert?

Alles Klar, ich danke dir für die Antorten. Ich werde es so versuchen.

von Εrnst B. (ernst)


Lesenswert?

Wäre halt der Weg, den ich gehen würde, muss deshalb nicht der einzig 
wahre sein...
Großer µC mit vielen PWM-Kanälen oder SoftPWM ginge natürlich auch...

Obwohl, Schul- oder Uniprojekt?
Mit der modularen Lösung kriegst du drei extra-Kapitel für die 
Ausarbeitung geschenkt, Systemaufbau, Gelenk-Steuer-Einheit und 
Kommunikationsprotokol :)

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Rachid schrieb:
> Hallo allerseits,
>
> ich brauche für eine Anendung einen Mikrocontroller, mit dem man 18 PWMs
> erzeugen kann.

Infineon TriCore TC1796?

von Peter D. (peda)


Lesenswert?

Es ist auch eine Frage der Störsicherheit.
Wenn Du 18 Leistungs-PWM auf langen Kabeln rumsauen läßt, ist das 
vielleicht ein guter Handy-Blocker.

Wenn aber jeder Motor direkt seinen MC + Leistungsteil hat, mußt Du nur 
unkritischen Gleichstrom (z.B. 24V) übertragen.

Für den Datenbus bietet sich CAN an. Dann muß man nicht mehr viel 
Protokoll selber schreiben, die CAN-Hardware macht das gröbste selber 
(Arbitrierung, Retry, Adressierung, Fehlererkennung).


Peter

von MCUA (Gast)


Lesenswert?

>Mit den PWMs möchte ich 6 Bürstenlose Gleichstrommotoren betreiben.
Viel zuviel für einen uC.
würde je Motor einen uC nehmen.  ist viel besser scalier u. handhabbar.
Als Bus kan man auch ein 'richtigen' Adr/Daten-bus nehmen, der ist dann 
sehr schnell.

von Ralph (Gast)


Lesenswert?

TI TMS470  ( ARM7 TDMI) kann bis zu 32 IO Kanäle mit unabhängigen PWM 
betreiben.
µC Modul dazu nennt sich HET

von R. B. (rabis)


Lesenswert?

Hi,

der Atmel AT89C51AC3 (auch nett ist der AT89C51ED2) hat eine 
PCA-Einheit. Die kann 5 PWMs erzeugen und läuft nach Initialisierung 
unabhängig von der Software.
Dann könnte man z.B. auch mehrer MCUs mit SPI (Master/Slave) oder UART 
im 9Bit Mode miteinander verknüpfeln. Da geht Einiges ...

http://www.atmel.com/dyn/resources/prod_documents/doc4383.pdf

Ist vielleicht einen Versuch wert.

Gruß
RABIS

von Simon H. (simi)


Lesenswert?

Oder ein FPGA zuhilfe nehmen. Ich bin gerade dabei, mir einige 
Überlegungen zu einer Steuerelektronik für vier Brushless-Motoren (nur 
Kommutation) basierend auf einem ProAsic von MicroSemi (früher Actel) zu 
bauen. Aber eben, das sind erst allererste Überlegungen und einige 
wenige Zeilen VHDL. Die Idee besteht im Moment darin, über ein SPI 
(o.ä.) Interface die vier "Spannungen" (für jeden Motor eine) in den 
FPGA zu laden. Dazu für jeden Motor drei Eingänge für Komparatoren, die 
den Kommutierungszeitpunkt feststellen, dann halt einge SM, 
PWM-Generatoren etc...
Über SPI gingen die Drehzahlen zurück; mit Strommessung hätte das FPGA 
nichts am Hut. Und auch nicht für Regelungen irgendwelcher Art. Das 
würde dann der uC machen.

Mal sehen, ob was draus wird...

Gruäss
Simon

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Der STM32 kann bis zu 32 PWM Kanäle.
Mehr gibt es im Artikel STM32 zu lesen.

(Timer können bis zu 4 PWM Ausgänge haben, die separat programmierbar 
sind)

von Simon H. (simi)


Lesenswert?

Daran habe ich auch gedacht. Für einen Brushless hätte der auch wirklich 
eine wunderschöne Unit, mit komplementärausgängen, Totzeit etc...

Die restlichen Units sind dann aber ein bisschen spartanischer. Ich muss 
gestehen, dass ich es (noch) nicht genauer angeschaut habe, aber vier 
oder gar 6 Brushless mit Kommutation in einem STM32 ohne externe 
Hardwareunterstützung unterzubringen halte ich für sportlich. Aber das 
ist bloss ein Bauchgefühl.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Für den Datenbus bietet sich CAN an.

Wenn die neuen Befehle nicht allzu oft kommen, genügt wahrscheinlich
sogar I²C.  Arbitrierung braucht man eigentlich nicht, weil's nur
einen dedizierten Busmaster gibt.

von Wichard (Gast)


Lesenswert?

Für den TC1797 gibt es dazu ein Application Note: AP32148 Multi-axis 
motion control. Findest Du unter
http://www.infineon.com/search/en?q=AP32148&sd=PRODUCTS

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Wichard schrieb:
> Für den TC1797 gibt es dazu ein Application Note

Ob er nicht nach nur vier Monaten sein Problem allmählich gelöst hat?

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
Noch kein Account? Hier anmelden.