Full-Bridge (H-Bridge) mit AVR ansteuern

Gast
Mit den PWMs geht (fast) alles, also um Deine Frage zu beantworten: ja! 
Dein Programm muß lediglich dafür Sorge tragen, daß die OCRs zum 
richtigen Zeitpunkt übergeben werden. Und Du wirst 2 getrennte PWM-Timer 
für diese Impulsform brauchen, die zueinander sysnchron laufen müssen.
Gast
Du brauchst nur einen PWM wenn du den einen Pfad (A) mit statischem 
Signal und den Anderen (B/) mit PWM ansteuerst. Mit einem 7400 kannste 
den PWM mit einem statischen Signal von Vorwärts auf Rückrarts 
umschalten (von B/ auf A/).
Gast
Bischen missverständlich ausgedrückt! das 'statische' Signal musste 
natürlich Zeitabhängig vom PWM schalten, meinte einen normalen 
Ausgangspin damit.
Gast
Hast du Recht, das ist'n alter Entwurf eines RC-Fahrtreglers. Die 
statischen Signale dienen hier nur dazu, die PWM um- bzw. abzuschalten. 
Die versetzten Signale müssen zusätzlich in Abhängigkeit vom PWM 
geschaltet werden.
(Firma: TravelRec.) Persönliche Seite
1. Antwort ganz oben auf Deine Frage:

>Und Du wirst 2 getrennte PWM-Timer für diese Impulsform brauchen, die zueinander 
sysnchron laufen müssen.

Wenn Du nun OCR1A und OCR1B nimmst, dann ist das 1 Timer, nämlich 
Timer1. Du mußt also Timer0 (bzw. Timer2, je nach Controller) und Timer1 
benutzen, mit den entsprechenden OCR-Pins.

Lesebrille putzen ;-)
Gast
Du brauchst 4 Pins, also für jeden Transistor einen, wenn du keine 
weiteren (externen) Bauteile verwenden willst:
Die beiden OC-Ausgänge steuern die beiden oberen Transistoren an; zwei 
weitere Portpins steuern die beiden unteren an.
Will man jetzt in die eine Richtung "drehen" lassen, schaltet man den 
einen OC-Pin auf den Timer und den gegenüberliegenden Portpin ein.
In die andere Richtung halt den anderen OC-Pin und Transistor.
Man braucht nur einen Timer mit 2 OC-Interrupts...
OP
Travel Rec. wrote:
> 1. Antwort ganz oben auf Deine Frage:
>
>>Und Du wirst 2 getrennte PWM-Timer für diese Impulsform brauchen, die zueinander 
sysnchron laufen müssen.
>
> Wenn Du nun OCR1A und OCR1B nimmst, dann ist das 1 Timer, nämlich
> Timer1. Du mußt also Timer0 (bzw. Timer2, je nach Controller) und Timer1
> benutzen, mit den entsprechenden OCR-Pins.
>
> Lesebrille putzen ;-)

ja das geht wenn ich einen Mega nehme, ich brauche ja den dritten Timer 
für die Zeit X (also die Differenz)
Gast
Dann muss der Watchdog auch neue Leiterbahnen auftragen. Ist mir auch 
schon passiert, beim Programmieren noch den Akkupack dran, Vorwärts und 
Rückwärts (zufällig) gleichzeitig durchgesteuert, dicke MOSFETs => 
heller Blitz!
Gast
>beim Programmieren noch den Akkupack dran...

MosFets an den ISP-Leitungen?! Oh Mann.... Andererseits klemmt man 
während des Programmierens doch wohl sicherheitskritische Sachen ab. Man 
irrt sich ja auch hin und wieder im Erstellen von Code. Dagegen hilft 
weder ein Hardware- noch ein interner Watchdog.
Gast
Nö, die MOSFETs waren nicht an den ISP-Leitungen. Nur passiert einiges 
mit den Portpins, zumindest mit den Pullups wärend dem Programmieren, 
das langt den MOSFETs zum Durchsteuern. Im Eifer des Gefechtes kann's 
schon mal vorkommen dass man was vergisst, aber sowas nur einmal, grins!
(Firma: TravelRec.) Persönliche Seite
>Nur passiert einiges mit den Portpins, zumindest mit den Pullups wärend dem 
Programmieren

Wie das? Normal werden die beim Programmieren durch den RESET hochohmig, 
mehr nicht. Dadurch könnten sich freilich die Gates an den MosFets durch 
Fremdspannungen aufladen. Deshalb habe ich an den MosFets immer 10k 
Widerstände vom Gate zur Source. Dann bleibt während des Proggens alles 
im Grünen Bereich.
Gast
Hast recht, die werden hochohmig, d. h., der Portpin wird als Eingang 
definiert. Die Pullups, also das PORTx - Register wechselt aber während 
des Programmiervorganges unkontrolliert die Zustände. Das kann bei einer 
MOSFET-Gate zum Durchsteuern dicke reichen!
(Firma: TravelRec.) Persönliche Seite
>Die Pullups, also das PORTx - Register wechselt aber während
>des Programmiervorganges unkontrolliert die Zustände

Halte ich für ein Gerücht. Der Controller ist während des gesamten 
Programmiervorgangs im RESET, hat also keinen Zugriff auf irgendwelche 
Register, also bleiben diese auch genau so, wie sie direkt vor dem RESET 
waren. Beim Löschen des Reset-Zustandes gehen alle I/O-Register, zu 
denen auch die PORTx-Register gehören, auf ihre INIT-Werte - in diesem 
Falle $00, also alles auf "Eingang, PullUp aus"; bis irgendwann das 
Anwenderprogramm dann etwas anderes vorgibt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.