PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM-Bauteile



Sumada
04.09.2008, 08:46
Ciao zusammen
Ich habe in meiner Firma gerade ein Projekt am laufen. und zwar ein autonomer Roboter.
Die Motorenansteuerung mache ich mit einem l298N. Jetzt muss ich nur noch ein PWM-Signal einspeisen.
Für mit dem Microcontroller dieses Signal zu erstellen, habe ich nicht genügend Zeit frei. Daher habe ich mich gefragt ob es ein Baustein gibt, welchem man das Impulspausenverhältniss einspeist oder so, und dieser dann bis zu der nächsten änderung dies beibehaltet, sodass man nur bei einer Geschwindigkeitsänderung vom uC ein Signal geben muss.
mfg
Sumada

ikarus_177
04.09.2008, 09:30
Hi,

ginge vielleicht ein TL494CN in diese Richtung?

lg ikarus_177

McJenso
04.09.2008, 09:33
Hallo,


welchem man das Impulspausenverhältniss einspeist oder so
Wie soll das passieren? Wird das Verhältnis manuell vorgegeben (z.B. Potis) oder soll es sich im Betrieb automatisch ändern? Wenn es sich ändern soll, wie und von wem wird das dem Baustein mitgeteilt.

Für mit dem Microcontroller dieses Signal zu erstellen, habe ich nicht genügend Zeit frei.
Warum hast du keine Zeit dafür? Liegt es an der Zeit für die Programmierung oder ist der Controller (welcher?) schon ausgereizt?
Gib uns grad noch ein paar mehr Infos.
Mögliche Lösungen sind z. B. ein kleiner µC, LM 555

Gruß

Jens

thewulf00
04.09.2008, 09:39
Nimm doch einfach noch einen 2. µC, woe es McJenso vorschlug. Dann kannst Du ihm sogar über 4-8 Bit (über einen kompletten Port) Das Tastverhältnis übergeben und der andere macht die PWM.

python_rocks
04.09.2008, 09:51
Für mit dem Microcontroller dieses Signal zu erstellen, habe ich nicht genügend Zeit frei. Daher habe ich mich gefragt ob es ein Baustein gibt, welchem man das Impulspausenverhältniss einspeist oder so, und dieser dann bis zu der nächsten änderung dies beibehaltet
Hallo Sumada!

Ich würde einen zweiten Mikrocontroller dafür verwenden und einfach mit dem ersten Mikrocontroller über SPI, UART, I²C,... verbinden.

mfg
Gerold
:-)

Sumada
04.09.2008, 10:23
danke für die Ideen.
@McJenso
Der LM555 benötigt bis zu 200mA, was recht viel ist für ein Batteriebetriebenes Gerät.
@beinahe alle anderen
Einen zweiten uC anzuschliessen habe ich mir auch shcon vorgestellt.
Aber SPI wird kaum möglich sein da uCs als Master geschaltet sind, und 2 masters nich miteinander kommunizieren können.
einen 2ten uC ist auch noch mehr Software, ich möchte aber hauptsächlich hardware und nur beim Steuerelement die Software.
mfg

python_rocks
04.09.2008, 10:46
Aber SPI wird kaum möglich sein da uCs als Master geschaltet sind, und 2 masters nich miteinander kommunizieren können.
Hallo Sumada!

Welchen Mikrocontroller und welche Programmiersprache setzt du ein? Meine Mikrocontroller (ATtiny und ATmega) können auch als Client arbeiten -- und noch viel mehr. Das dürfte bei den PICs auch nicht groß anders sein.

mfg
Gerold
:-)

McJenso
04.09.2008, 10:53
Hallo,

mal zur Erklärung meiner Fragezeichen ;-)
wenn du zum Beispiel einen AVR einsetzt, so hat der Hardwaretimer, die auch PWM erzeugen können. Wenn wir nun wüssten, was für einen Controller du einsetzt, könnten jemand der den Controller kennt sagen, ob das bei dem auch so ist. Dann hast du minimal mehr Code, mit seh, sehr geringen Laufzeiten.
Aus deinem letzten Posting entnehme ich, dass das Pulsbreitenverhältnis vom vorhanden Controller aus geändert werden soll, oder? Jetzt kommt der Kackpunkt.
nur beim Steuerelement die Software. Wie? Wie stellst du dir das vor? Was ist das Steuerelement, wenn nicht der Controller? Woher weiß das Steuerelement was es machen muss? Wenn es denn der µC ist, treibst du doch den Teufel mit dem Beelzebub aus. Bitte schildere den Informationsfluss ganz genau.


Gruß

Jens

Sumada
04.09.2008, 11:58
Also
Ich möchte ein PIC18f87J10. Welches mein Steuerelement ist. Ich habe mir auch schon überlegt ein digitales potentiometer als r2 bei der astabilen lm555-schaltung zu verwenden, aber der strom war mein Problem.
Der PIC hat auch timers mit welchen ich ein PWM-Signal erzeugen kann, sogar 4, aber ich habe ein Zusatz am Roboter bei dem ich etwa 10ms Mikrofone abfrgae, um die lauteste Signalquelle zu orten. Daher möchte ich weniger dass in dieser Zeit oder in der Zeit anderer Sachen (Display beschreiben, etc.) eine Serviceroutine diese Analysen und Schreibvorgänge unterbricht um Fehler zu vermeiden. Daher wäre es Ideal, wie z.B. beim lm555 mit dem digitalen Poti, einmalig ein Signal ausgeben, beim Poti via SPI kurz den Wert einstellen, um dann den Programmablauf nicht weiter zu hindern.
Hoffe das ist information genug, wenn nicht bitte weiter fragen, damit ich besser zum Ziel komme.
mfg

McJenso
04.09.2008, 12:34
hallo,

jetzt verstehe ich dein Problem. Ich würde es wirklich mit einem kleinen µC machen. Allerdings dann nicht SPI sondern I2C (TWI) nehmen. Benötigt nur 2 Pinne Clk und SDA, ist recht einfach und lässt sich auch als Softwarelösung schnell implementieren. Funktioniert wie ein Schieberegister.
Bei den AVR's würde ich dir jetzt einen AtTiny ans Herz legen wollen, geringe Stromaufnahme, minimalste ext. Beschaltung. Bei den PIC's findet sich sicher jemand anderes, der einen Typen empfehlen kann.

Gruß

Jens

Sumada
04.09.2008, 13:06
Ist aber etwas umständlicher als wenn nur ein Baustein angesteuert werden muss welcher auch ohne Software läuft oder nicht?

McJenso
04.09.2008, 13:52
Hallo,

wenn dir die Lösung mit dem Poti und dem LM besser gefällt, werde ich dich nicht davon abhalten :) Das ist völlig okay und wird funktionieren.
Das Erstellen der Software auf dem extra µC ist sicher aufwändiger. Dafür hast du alles in einem und bist recht flexibel. Anfahr- und Bremsrampen sind denkbar, ohne das dein Hauptcontroller beeinflusst wird. Zwei Motoren? ein Baustein. Alles eine frage des gewählten Controllers.
Ein für mich weiterer Vorteil währe, ich hätte einen da ;-)

Gruß

Jens

StEndres
11.09.2008, 11:56
Und wo ist jetzt genau das Probelm? Dein PIC18f87J10 kann doch die PWM in der Hardware erzeugen. Davon bekommt die Software nichts mit, wird auch nicht unterbrochen oder so. Einstellen und der macht das solange bist du ihm was anderes vorgibst.

Sumada
12.09.2008, 12:25
wie macht man das?

Besserwessi
12.09.2008, 13:20
Proktisch alle Controller können PWM Signale Hardwaremäßig erzeugen. Wie das geht wird im Datenblatt des Controllers beschrieben, irgendwo bei der Beschreibung der Timer. Der Timer wird in den PWM versetzt und dann in ein (oder 2) Register der Wert für das Tastverhältnis geschrieben.
Oft kann sogar mehr als ein PWM Kanal so erzeugt werden.

the_Ghost666
12.09.2008, 14:54
Moin, bei den PICs heißt das HardwareModul dafür CCP oder ECCP, Capture, Compare,PWM bzw. Extended Capture, Compare,PWM. Findest du ganz sicher im Datenblatt.
Da kannst du dann in ein Register dein Einschaltverhältniss eingeben, in nem anderen die Periodendauer regeln, also ob X Hz, oder Y Hz.
Normalerweise sind die Ausgabepins aber an einer speziellen Stelle, z.B. PORTC,3 oder so. Wenn du die Ausgabepins schon belegt hast, musst du ne andere Lösung suchen.
Es kann sein, dass andere Geschichten bereits das PWM Modul belegen, da es meist einen eigenen Timer mitbringt, der gerne mal benutzt wird, oder du die Capture oder Compare Features brauchst, um eine Signaldauer usw zu bestimmen.
Am einfachsten wäre es, die Motorendstufe komplett mit intelligentem Digitalinterface aufzubauen. Ein kleiner PIC könnte dann die Steuerung übernehmen, während der Hauptprozessor als Bus-Master einfach die Daten sendet. Der Kleine wäre dann als Slave konfiguriert. Schau mal under dem Stichwort nach MSSP oder SSP, das ist die Hardware für z.b. einen I2C Master (Mssp) oder Slave (ohne SSP, die kleinen PICs haben meist nur SSP).