Hallo Und zwar habe ich mein altes Auto zu einem Elektroauto umgebaut. Zurzeit läuft es mit einer simplen PWM-Ansteuerung ohne AVR etc. . Nun will ich das ganze mit einem ATmega8 aufbauen (siehe Schaltung), jedoch weiß ich irgendwie nicht wie ich am besten mit dem Programm anfangen sollte. Nun zur Schaltung: Der Motor wird mit 48V versorgt und der zulässige max.Strom beträgt 200A. 1) Das Gaspedal hängt über einen Seilzug an einem 10k Poti . Dieses analoge Signal soll über einen ADC-Wandler digital gewandelt werden und nach einem I-Algorithmus steigen. Also dass wenn ich voll ins Gaspedal steige soll der Strom keinen Sprung machen sondern linear steigen mit einer gewissen Zeitkonstante(ein paar ms). 2) Der Eingang für die Strombegrenzung soll auch ADC gewandelt werden und nach einem PI-Verhalten steigen. Wenn der max. Strom erreicht ist setzt die Strombegrenzung ein und das egal wie viel ich am Gaspedal steh , es sollte nicht reagieren bis der max.Strom unter der Strombegrenzung liegt. 3) Der Ausgang soll eine PWM sein die den Treiber-IC steuert. Ich hoffe ihr könnt mir ein paar Tipps , für das Programm, geben. mfg
:
Verschoben durch Moderator
Korea Korea schrieb: > 1) Das Gaspedal hängt über einen Seilzug an einem 10k Poti . Dieses > analoge Signal soll über einen ADC-Wandler digital gewandelt werden und > nach einem I-Algorithmus steigen. Also dass wenn ich voll ins Gaspedal > steige soll der Strom keinen Sprung machen sondern linear steigen mit > einer gewissen Zeitkonstante(ein paar ms). Das einfachste ist eine Technik, die ich 'nachlaufender Wert' nenne. Du trennst dabei zwischen der Benutzervorgabe und dem Wert der dann tatsächlich als Sollwert in die weitere Regelung weitergereicht wird. Das ganze ist dann relativ simpel: In zb einer ISR, die alle paar µSekunden aufgerufen wird, wird der Sollwert um einen gewissen linearen Anteil in Richtung der Benutzervorgabe nachgeführt: * ist der Sollwert kleiner als die Benutzervorgabe, so wird der Sollwert um einen konstanten Wert erhöht * ist der Sollwert größer als die Benutzervorgabe, so wird der Sollwert um einen konstanten Wert verringert. Dadurch läuft der Sollwert immer der Benutzervorgabe hinterher, macht das allerdings niemals sprunghaft, sondern in kleinen Schritten. Viele kleine Schritte regelmässig ausgeführt sorgen dann auch dafür, dass die Benutzervorgabe irgendwann erreicht wird. Durch entweder die Aufruffrequenz oder die Höhe des Increments/Decrements kann gesteuert werden, wie schnell der Sollwert die Benutzervorgabe einholen kann
1 | volatile int16_t Sollwert; |
2 | volatile int16_t Benutzervorgabe; |
3 | volatile int16_t Increment; |
4 | |
5 | ISR( ..... ) // such dir einen Interrupt aus |
6 | {
|
7 | if( Sollwert < Benutzervorgabe ) { |
8 | Sollwert += Increment; |
9 | if( Sollwert > Benutzervorgabe ) |
10 | Sollwert = Benutzervorgabe; |
11 | }
|
12 | |
13 | else if( Solwert > Benutzervorgabe ) { |
14 | Sollwert -= Increment; |
15 | if( Sollwert < Benutzervorgabe ) |
16 | Sollwert = Benutzervorgabe; |
17 | }
|
18 | }
|
> > 2) Der Eingang für die Strombegrenzung soll auch ADC gewandelt werden > und nach einem PI-Verhalten steigen. Was ist ein PI-Verhalten? > Wenn der max. Strom erreicht ist > setzt die Strombegrenzung ein und das egal wie viel ich am Gaspedal steh > , es sollte nicht reagieren bis der max.Strom unter der Strombegrenzung > liegt. Klingt für mich nach einer simplen Beschränkung auf einen Maximalwert. > 3) Der Ausgang soll eine PWM sein die den Treiber-IC steuert. Ja, ok. PWM ist Standardaufgabe. > Ich hoffe ihr könnt mir ein paar Tipps , für das Programm, geben. Die wichtige Frage ist doch eher: Wieviel hast du schon programmiert. All deine 'Probleme' sind doch eher 'Problemchen', über die man im normalen Lernprozess der Programmierung stolpert. Von daher wundert mich, dass du sie überhaupt hast.
sorry war nicht genau ausgedrückt. Mit PI-Verhalten meinte ich einen PI-Regler. Was die "Problemchen" angeht gibts einen einfachen Grund. Ich bin eher ein Programmierflüchtling und kenn mich nicht so gut aus obwohl ich einiges darüber gelernt und gelesen habe. Bin eher der Hardware-Typ. Das Problem ist ich weiß nicht wie bzw. womit ich anfangen sollte. Danke für deinen Tipp!
Korea Korea schrieb: > sorry war nicht genau ausgedrückt. Mit PI-Verhalten meinte ich einen > PI-Regler. > > Was die "Problemchen" angeht gibts einen einfachen Grund. Ich bin eher > ein Programmierflüchtling und kenn mich nicht so gut aus obwohl ich > einiges darüber gelernt und gelesen habe. Dann solltest du üben, üben, üben. Leg dein Projekt erst mal auf Eis und mach dich mehr mit grundlegenden Programmierdingen vertraut. UNd wenn du dich dann fitter fühlst, probierst du die (vermuteten) Einzelteile erst mal in jeweils eigenen Programmierprojekten aus. Und wenn du dich dann noch fitter fühlst, gehst du dein großes Projekt an.
ich bin jetzt so kurz vor dem Ende und will das unbedingt fertig kriegen. Ich hab sehr viel Zeit darin investiert und habe jetzt so viel um die Ohren, dass ich keine Zeit mehr für Freizeitarbeiten habe. Ich bitte um Hilfe
Korea Korea schrieb: > ich bin jetzt so kurz vor dem Ende Wenn bis jetzt 'nur' die Hardware steht, bist du noch lange nicht 'kurz vor dem Ende'. Jetzt geht dein Projekt erst richtig los! Es ist ein Trugschluss zu glauben, die Software macht sich so nebenbei fast von selber. Die NASA hat das bei Apollo auch geglaubt: Wir geben den Bordcomputer in Auftrag und wenn der in den verfügbaren Raum einpasst, dann können wir schon fliegen. Das bischen Programm wird so wild schon nicht sein. Das bischen Programm hat dann 7 Jahre gedauert.
Die Software macht sich nicht von selber das ist mir schon klar. Aber ich brauche was Software angeht Hilfe, da ich mich eher mit Hardware auskenne. Darum ist die Hardware auch kein Problem gewesen. Doch jetzt brauche ich sehr große Hilfe beim Programmieren des Atmega8.
>1) Das Gaspedal hängt über einen Seilzug an einem 10k Poti . Dieses >analoge Signal soll über einen ADC-Wandler digital gewandelt werden und >nach einem I-Algorithmus steigen. Also dass wenn ich voll ins Gaspedal >steige soll der Strom keinen Sprung machen sondern linear steigen mit >einer gewissen Zeitkonstante(ein paar ms). In der Antriebstechnik heisst das Beschleunigungsrampe (gibt es natuerlich auch als Bremsrampe) und ist ueblicherweise ueber Parameter im Antriebsregler beeinflussbar. doch Gast
Tipp: Bei dem IR2113 musst Du aufpassen, dass alle paar 100ms der Low Side FET geschaltet wird um den Bootstrap Kondensator zu laden. Das heißt, der High side Brems FET kann nicht alleine geschaltet werden. Axel
Korea Korea schrieb: > auskenne. Darum ist die Hardware auch kein Problem gewesen. Doch jetzt > brauche ich sehr große Hilfe beim Programmieren des Atmega8. Dann hilft alles nichts. Du musst das lernen. Und zwar von der Pieke auf. Dein Projekt ist keine Kleinigkeit. Es hilft daher auch nichts, wenn man dir den Grossteil als fertigen Code vorsetzt. Das schlimmste was du tun kannst, ist IMHO jetzt wie die Maus vor der Schlange zu stehen und Angst zu haben. Du musst dein Problem in Teile aufteilen. Wenn immer irgendwie geht, losgelöst von der realen Hardware, um zunächst nichts zu zerstören. Und in diesem Sandkasten probierst (und lernst) du einzelne Aspekte deines Problems. Und erst dann, wenn du Übung hast und die meisten Teile für sich einzeln schon mal programmiert hast und Erfahrung damit gesammelt hast, erst dann gehst du aus dieser Sandkiste wieder heraus und beginnst mit deinem wirklichen Projekt. Meine Meinung. Andere mögen das anders sehen. Ich bin zwar nicht zimperlich, wenn es darum geht, anderen mit Code auszuhelfen. Aber das ist mir dann doch eine Nummer zu groß als das ich hier von der anderen Seite des Monitors aus ein derartiges System ins Blaue hinein schreibe würde ohne (ungefährliche) Vortests mit deiner Hardware machen zu können, bzw. mich da mit Messequipment bewaffnet durchtasten zu können. Fang damit ein, eine simple LED mittels PWM in ihrer Helligkeit einstellbar zu bekommen. Du kannst da Hardware-PWM benutzen. Im AVR-GCC-Tutorial müsste sich dazu was finden. Dann nimmst du den ADC in Betrieb und stellst mit dem ADC (und einem Poti) die LED-Helligkeit ein. Das sollte mal einen Anfang geben, der sich auf deinen Motor umlegen lässt.
ich bräuchte nur ein programm, was ungefähr brauchbar wäre mit dem ich dann weiter arbeiten kann, verbessern kann oder egal was sonst ansteht.
ich empfehle einen Mega88 mit einem LCD drann. Sende Dir heute Abend mal ein Programmgerippe. (hoffe dass ich das nicht vergesse) Axel
Hier ist das Programmgerippe!!!! liest nur einen Analogwert ein, zeigt ihn auf dem LCD an , hat einen Hochlaufgeber und zeigt den Wert nach dem Hochlaufgeber an. mehr nicht, es sollja noch etwas Spaß übrig bleiben. Das Programm ist zwar fehlerfrei kompiliert, aber nicht auf einem Mega88 getestet. Axel
Juhu... es gibt noch Wunder. @KK.. Respekt. Du bist meines Wissens nach der erst der es mal andersherum gemacht hat. Nicht "ich bin ein Elektronik-DAU, wie mache ich eine 500A PWM Brücke" sondern "ich hab eine Monster PWM-Brücke die schon läuft, ich bräuchte nur noch saubere Elektronik zum ansteuern". Eine simple PWM hast ja schon. Auch wenn hier ein paar Leute was anderes behaupten... du hast das meiste schon geschafft. Mach dir nur ein sauberes Board/Ansteuerung, der Rest ist Software. Viel einfacher als man glaubt. Es gibt ja zig Beispiele. Das bekommen wir schon hin. Willst du dann auch mal grob deine verwendete Technik erläutern?
Diese Endstufe ist mE nicht der Aufgabe gewachsen ! ...egal ob mit oder ohne Software. Das passt alles unten in die Hose ;-)
pppuuu schrieb: > Diese Endstufe ist mE nicht der Aufgabe gewachsen ! > ...egal ob mit oder ohne Software. > > Das passt alles unten in die Hose ;-) Die Endstufe kann ich nicht beurteilen. Nichts gegen Axel. Mir ist schon klar, dass er nicht das Projekt machen wollte sondern erst mal etwas zu Spielen vorgeben will. Aber das endgültige Programm wird ganz anders aussehen, als das was er da vorgegeben hat :-) Das ist so nicht zu gebrauchen. Ich bleib immer noch dabei: Mit einfacheren Dingen anfangen und sich das Wissen aneignen. In Axels Programm kommt nichts vor, was man sich nicht auch aus dem Tutorial hätte anlesen können, sofern man über C Grundlagen verfügt. Wenn das ein "du hast mir sehr geholfen" hervorruft, dann gute Nacht. > Eine simple PWM hast ja schon. Hat sie nicht. Hast du ins Programm hineingeschaut? (Oder meinst du ihre PWM-Hardware. Die kann sie aber nicht weiterverwenden) > Auch wenn hier ein paar Leute was anderes behaupten... > du hast das meiste schon geschafft. Der war gut :-) > Software. Viel einfacher als man glaubt. > Es gibt ja zig Beispiele. Das bekommen wir schon hin. Bin schon neugierig, wie du sie durch den Rest durchsprechen wirst.
Karl heinz Buchegger schrieb: > sondern erst mal etwas zu Spielen vorgeben will genau. Dafür ist ein LCD Gold wert, auch wenn es nur ein paar Euro kostet. Aber man sitzt nicht dumm vor dem Prozessor und weiss nicht warum irgend was nicht klappt. Da kann man mal schnell einen Wert auf die Ausgabe legen und schon hat man einen Ahhhhh und Ohhh Effekt. > Das ist so nicht zu gebrauchen. mit der Bewertung kann ich leben. Axel
Auch wenn ich weiter oben einen Mega88 empfohlen habe, der Appetit kommt beim Essen. Vieleicht ist es besser gleich einen Mega32 zu nehmen, da hat man auf jeden Fall genug I/O Pins. Kriegste das Programm simuliert? Axel
>da hat man auf jeden Fall genug I/O Pins.
?? bitte , wofür ?? Um den Motor anzusteuern und das Poti einzulesen?
Ein Tiny 25 oder 45 reicht wohl allemale.
axelr.
hey leute...hab mal einen anfang von meinem programm. bitte anschauen und sagen ob ich was verändern sollte oder falsch angegangen bin. hier nehme ich 2 ADC eingänge (für gas und für I, siehe Schaltung)
nochwas zu lesen, viel Spaß weiterhin Beitrag "Re: 1Q Endstufe für Inenn=30A" Beitrag "Problem bei PWM-Motor-Steuerung über MOSFET" http://ev-power.blogspot.com/2009/08/open-source-dc-motor-controller.html ;))
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.