Programm für Fahrtsteller anpassen Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Programm für Fahrtsteller anpassen |
|
|
|
|
BID = 840790
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
|
Hallo Leute,
wie ihr vielleicht wisst, bin ich noch nicht so wirklich fit in Sachen Mikrocontrollerprogrammierung. Mit C habe ich mich inzwischen zwar ein wenig angefreundet, aber jetzt habe ich hier ein Assembler Programm für einen Fahrtsteller vor mir.
Dieses Programm muss aber, wie es die Überschrift erahnen lässt, etwas angepasst werden.
Derzeit steuert es die beiden diagonal gegenüberliegenden FETs der H-Brücke mittels PWM an. Da ich die Endstufe aber auf N-Kanal MOSFETs umgebaut habe, und die oberen FETs mit einem DCDC-Wandler ansteuere, ist das sehr ungünstig.
So sollte es am Ende sein:
Je nach Drehrichtung wird einer der Highside-FETs statisch eingeschaltet und der diagonal gegenüberliegende mit der PWM.
Beim Bremsen werden die beiden Lowside-FETs angesteuert, dies kann auch so bleiben.
Hier der Link zum Original
Leider wird dieses Projekt vom Entwickler nicht mehr weiterverfolgt, so dass ich euch jetzt damit behelligen muss.
Könnt ihr mir bei dem Problem weiter helfen? Oder kennt vielleicht sogar ein fertiges Programm, dann immer her damit.
Anbei noch der Schaltplan der Endstufe und das Programm.
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber. |
|
BID = 840794
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
Im Original invertieren die oberen Treiber ja (unter Einbeziehung der Mosfets 2X also wird aus H wieder H), aber wie ist das bei deinen jetzt eingesetzten "DC/DC Convertern"?
Und warum benutzt du da nicht eines der üblichen Ansteuer-ICs, die die benötigte Spannung mittels Ladungspumpe erzeugen?
[ Diese Nachricht wurde geändert von: perl am 30 Jul 2012 14:35 ] |
|
BID = 840817
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| aber wie ist das bei deinen jetzt eingesetzten "DC/DC Convertern"? |
Genau so. Bei HIGH schalten die Transistoren T2/T4 die DCDC Wandler und diese wiederum die FETs ein. Wie im Original.
Zitat :
| Und warum benutzt du da nicht eines der üblichen Ansteuer-ICs, die die benötigte Spannung mittels Ladungspumpe erzeugen?
|
Das die Frage kommt, hatte ich schon erwartet. Dat is so, weil ich noch zwei dieser Wandler da hatte, aber eben keine dieser ICs. Diese H-Brücken Konfiguration hatte ich auch schon in einem früheren Projekt erfolgreich eingesetzt, daher wollte ich es wieder so machen.
Noch ein Nachtrag zum Schaltplan: Es befindet sich noch je ein 1k Widerstand von Gate nach Source bei den Highside-FETs, damit diese ihre Ladung auch wieder los werden, wenn die DCDC Wandler abgeschaltet werden.
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 840877
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Es befindet sich noch je ein 1k Widerstand von Gate nach Source bei den Highside-FETs, damit diese ihre Ladung auch wieder los werden, wenn die DCDC Wandler abgeschaltet werden. |
Und das daaaaauuuuert, weil da wahrscheinlich ein Elko zu entladen ist. Ebenso lahm wirds in die andere Richtung gehen.
Warum willst du denn überhaupt das Programm ändern, anstatt die Treiber für die oberen FET anzupassen?
Dann kannst du wahrscheinlich auch mit einem einzigen Spannungswandler auskommen, der einfach durchläuft, und die +24V aufstockt.
Dazu brauchst du nicht einmal weitere Transistoren!
Du legst einfach R10 und R11 des Originals nicht an die Ports sondern an Vcc, und steuerst die Transistoren mit den Portpins am Emitter an.
Host mi?
P.S.:
Es empfiehlt sich in die Kollektorleitung des Treibertransistors noch eine Diode zu legen, da dieser Transistor in den Inversbetrieb gerät, wenn der untere MOSFET einschaltet.
Da aber wahrscheinlich noch ein bischen Widerstand und Zenerdiode an die Gateleitung gehört, damit die zulässige VGS weder positiv noch negativ überschritten wird, kann diese Diode evtl, auch entfallen, wenn dadurch der Strom aus dem Kollektoranschluss des npn genügend klein bleibt.
[ Diese Nachricht wurde geändert von: perl am 31 Jul 2012 1:44 ]
|
BID = 840913
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| Dann kannst du wahrscheinlich auch mit einem einzigen Spannungswandler auskommen, der einfach durchläuft, und die +24V aufstockt. |
Ja, daran hatte ich auch schon gedacht.
Dann war ich heute nochmal im Elektronik-Labor und siehe da, dort lagen doch Tatsache ein paar LTC1155 rum. Mit diesen könnte ich die Highside-FETs direkt ansteuern. Dazu müsste zwar die Betriebspannung von 24V verringert werden, aber dies wäre nicht so schlimm.
Das Problem bei diesen Dingern ist aber, dass sie eine Schaltzeit von etwa 200µs haben - und damit können sie nicht mit PWM betrieben werden. Womit wir wieder beim Problem der Umprogrammierung wären.
Ist es nicht generell sinnvoller, nur einen FET pro Richtung mit PWM zu betreiben und den anderen statisch zu schalten? Dann spart man sich doch die Schaltverluste im zweiten FET.
Was mich auch noch ein wenig stört, ist die geringe PWM-Frequenz. Diese beträgt nämlich, wie das Signal von der Fernsteuerung, 50Hz. Wie könnte man diese vergrößern?
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 840925
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Was mich auch noch ein wenig stört, ist die geringe PWM-Frequenz. Diese beträgt nämlich, wie das Signal von der Fernsteuerung, 50Hz. Wie könnte man diese vergrößern? |
Programm unter Ausnutzung der im µC vorhandenen Hardware selber schreiben und vor allem für eine vernünftige Ansteuerung der MOSFETS sorgen.
Bei den unteren hast du das ja schon in Angriff genommen, und beim C wird gerade ein Restbestand IR2181 verschleudert.
Das vorliegende Programm ist zwar heftig kommentiert, aber ansonsten unschön geschrieben.
Wenn du sagst, daß die PWM mit nur 50Hz läuft, habe ich sogar Zweifel, daß der Autor überhaupt mitbekommen hat, daß der AT2313 eine PWM-Schaltung an Bord hat, denn wenn, dann steuert er die oberen Transistoren damit an. PB0 und PB1 sind jedenfalls gerade nicht die PWM-Ausgänge.
Den 4Mhz Quarz braucht er eigentlich auch nicht, denn auf dem Chip befindet sich schon ein 8MHz RC-Oszillator, der auch auf 4MHz umschaltbar ist. Mit externem Takt rennt der Chip sogar bis zu 20MHz.
|
BID = 840937
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| Programm unter Ausnutzung der im µC vorhandenen Hardware selber schreiben |
Genau da liegt ja das Problem...
Zitat :
| Das vorliegende Programm ist zwar heftig kommentiert, aber ansonsten unschön geschrieben. |
Das glaube ich dir jetzt mal. Ich kann mir darüber kein Urteil erlauben.
Zitat :
| Wenn du sagst, daß die PWM mit nur 50Hz läuft, |
Das sagt der Entwickler:
Zitat :
| Die Impulsfrequenz spielt dabei (theoretisch) keine Rolle und liegt üblicherweise im kHz-Bereich. Dieser Fahrtregler verwendet die gleiche Frequenz wie die Fernsteuerung (ca. 50 Hz), weil da die Software recht einfach zu realisieren war. |
...und das Oszilloskop auch.
Zitat :
| PB0 und PB1 sind jedenfalls gerade nicht die PWM-Ausgänge. |
Stimmt, aber bei 50Hz anscheinend kein Problem.
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 840979
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Stimmt, aber bei 50Hz anscheinend kein Problem. |
Doch ist das ein Problem.
Einen Software-PWM mit 50Hz kann jeder schreiben, aber wenn es in den kHz -Bereich geht, muß die Hardware ran, und die gibt das Signal eben nicht auf PB0 und PB1 aus.
Ausserdem wäre es wohl sinnvoller dafür den Timer0 zu nehmen und den 16-Bit Timer1 für langsame Dinge zu verwenden.
Zitat :
| ...und das Oszilloskop auch. |
Auf welchen Pins erscheint denn das PWM-Signal, und welche sind statisch?
Afaik gibt es auch bei Atmel eine Applikationsschrift wie man C-Programme mit Assembler nachwürzt. Die kannst du dir ja mal anschauen.
|
BID = 841005
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| Auf welchen Pins erscheint denn das PWM-Signal, und welche sind statisch? |
Es werden immer die gegenüberliegenden FETs mit PWM angesteuert. Die anderen Ausgänge liegen auf HIGH (um den N-Kanal FET zu sperren) und LOW (um den P-Kanal FET zu sperren)
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 841091
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Es werden immer die gegenüberliegenden FETs mit PWM angesteuert. |
Was ja bereits überflüssig ist.
Es reicht einen FET mit PWM anzusteuern, während die übrigen drei statisch auf bestimmte Potentiale gelegt werden.
|
BID = 841114
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| Es reicht einen FET mit PWM anzusteuern |
Das mein ich ja auch.
Eigentlich würde ja auch ein PWM-Ausgang vom µC reichen, der mit etwas externer Logik auf beide Lowside-FETs, entsprechend einem Richtungssignal, aufgeteil wird. Falls das die Programmierung irgendwie erleichtern würde.
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 841159
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Eigentlich würde ja auch ein PWM-Ausgang vom µC reichen, der mit etwas externer Logik auf beide Lowside-FETs, entsprechend einem Richtungssignal, aufgeteil wird. Falls das die Programmierung irgendwie erleichtern würde. |
Wenn man nur die unteren Transistoren ansteuert, kann man sich übrigens auch die ihnen parallel liegenden Schottky-Dioden schenken, da dort niemals inverse Spannungen auftauchen.
Mit einem anderen Prozessor lohnte sich der Einsatz zusätzlicher Logik evtl., aber hier ist das eher kontraproduktiv, denn die Ausgänge vieler aktueller µC sind stromstärker als die üblichen Logik-Chips, sodaß man zumindest die unteren MOSFETS direkt ansteuern könnte.
Aber obwohl dieser Prozessor sogar vier PWM-Kanäle hat, kann man ihn dazu nicht mehr überreden, denn der Hersteller hat festgelegt, wo die PWM-Ausgänge liegen.
Dieser Designfehler, zusammen mit der fragwürdigen Ansteuerschaltung ist wahrscheinlich dafür verantwortlich, dass der PWM nur mit 50Hz läuft und die Transistoren heiß werden.
Der Autor hat das einfach nicht besser hingekriegt und danach sieht auch der Spaghetti-Code aus.
Zusammengefasst kann man sagen: Die Hardware taugt nicht, sodaß du ja selbst schon begonnen hast sie zu ändern, und die Software taugt nicht, weil das Ausgangssignal viel zu langsam ist.
Deshalb frage ich mich, was dich an dieser Schaltung so fasziniert.
Diesen Code zu entwirren und zu korrigieren dürfte deutlich aufwändiger sein, als ihn -nach eine sorgfältigen Hardwareplanung- neu zu schreiben.
Gut möglich, dass dabei auch ein anderer Prozessor im 8-poligen Gehäuse herauskommt, denn eigentlich reicht das doch.
|
BID = 841189
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
Zitat :
| Deshalb frage ich mich, was dich an dieser Schaltung so fasziniert. |
Gar nichts. Die Schaltung hat nämlich, wie dir ja auch schon aufgefallen ist, nichts faszinierendes. Ich hatte nur nach einem Projekt gesucht, bei welchem es einen fertigen Programmcode gibt. Dass dieser nicht viel taugt, hat sich erst später herausgestellt.
Hier gibt es auch noch einen kompletten Code für einen Fahrtsteller. Ob dieser allerdings besser ist, entzieht sich wieder meiner Kenntnis.
Mich wundert immer, dass diese Programme so lang sind. Es ist doch eigentlich nur die Pulsbreite des Empfängersignals zu messen und damit wiederum die Pulsbreite des Ausgangssignals zu erzeugen.
Wahrscheinlich schlagen jezt alle Programmierer die Hände über dem Kopf zusammen, daher: Bitte nicht hauen
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber.
|
BID = 841194
Ltof Inventar
Beiträge: 9332 Wohnort: Hommingberg
|
Zitat :
Offroad GTI hat am 1 Aug 2012 22:56 geschrieben :
|
... Es ist doch eigentlich nur die Pulsbreite des Empfängersignals zu messen und damit wiederum die Pulsbreite des Ausgangssignals zu erzeugen.
Wahrscheinlich schlagen jezt alle Programmierer die Hände über dem Kopf zusammen, daher: Bitte nicht hauen
|
Nö, in diesem Fall kann ich nur zustimmen, denn genau diesen Gedanken hatte ich auch.
Ich habe mir das Listing nicht angesehen, weil ich mich mit AVR-Assembler nicht auskenne.
Nach perls Kommentaren zu urteilen, hat sich der Ersteller überhaupt nicht mit der Hardware auseinandergesetzt, zusamengestrickt und drauflosprogrammiert.
Ich kann Dir nur dringend empfehlen, Dich mit der Hardware auseinanderzusetzen und die Aufgabenstellung geschickt mit der vorhandenen Hardware zu verknüpfen. Dann erst programmieren. Wenn das einen Knoten im Kopf ergibt, hast Du den falschen µC gewählt.
Statt den µC zu benutzen, den alle nehmen (bei PICs ist das traditionell der 16x84 ), nimmst Du den, der am besten passt. In zweiter Wahl nimmst Du den, mit dem Du am besten klar kommst.
Gruß,
Ltof
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 841195
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Hier gibt es auch noch einen kompletten Code für einen Fahrtsteller |
Der optische Eindruck jedenfalls ist besser.
Zitat :
| Mich wundert immer, dass diese Programme so lang sind. Es ist doch eigentlich nur die Pulsbreite des Empfängersignals zu messen und damit wiederum die Pulsbreite des Ausgangssignals zu erzeugen |
Da hast du völlig Recht.
Ein Grund für so lange Programme ist unzureichende Programmierpraxis (dagegen helfen Compiler), aber der Hauptgrund sind die eingebauten "Bells & Whistles"; also irgendwelche Nebenkriegsschauplätze, wie das Kompensieren von Hardwareunzulänglichkeiten und Fehlbedienungen.
Im Prinzip reichte es tatsächlich aus ein paar Register mit den richtigen Initialisierungswerten zu laden und dann in ein anderes Register den gewünschten PWM-Wert hineinzuschreiben. Danach läuft die PWM auch ohne weiteres Zutun des Prozessors.
Wenn man wie hier die Möglichkeit hat, den Prozessor mit verschiedenen Taktfrequenzen zu betreiben, dann sollte man i.d.R. die höchste wählen, denn dann kann man zwischen zwei Ereignissen mehr Instruktionen mit nicht optimaler Programmierung vertrödeln.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag heute wurden bisher 6 Beiträge verfasst © x sparkkelsputz Besucher : 182394463 Heute : 1659 Gestern : 7548 Online : 776 25.11.2024 10:26 3 Besucher in den letzten 60 Sekunden alle 20.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.110167980194
|