PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stromregelung mit Attiny26



erfolgstyp
14.12.2010, 14:01
servus,

ich möchte mir eine motorsteuerung (h brücke) mit fets aufbauen ich verwende dazu 2x den BUZ11 und 3x den IRF5305. gesteuert wird das ganze von einem attiny26. jeweils 2 der BUZ11 und der IRF5305 bilden die h brücke der 3te IRF5305 ist für die strombegrenzung gedacht. mit einem poti wird der maximal strom eingestellt und vom attiny26 gemessen zudem wird der fließende strom über einen shunt ebenfalls vom attiny26 gemessen der den strom dann über das tastverhältnis regelt.

das Problem ist dass es der controller nicht schafft den motorstrom an den sollwert anzugleichen stattdessen wird das tastverhältnis immer kleiner macht dann einen sprung zu 100% (ich denk mal weil dann OCR1A wieder bei 255 anfängt) und wird dann wieder kleiner.

ich bin wirklich ratlos ich sitzt nun schon seit gestern an dem fehler und komm einfach nicht weiter. das programm ist im anhang danke schonmal für eure hilfe

Besserwessi
14.12.2010, 15:49
Das dauernde umschalten der Ref. Spannung geht nicht: von der kleinen auf die große geht es noch so einigermaßen, aber in die andere Richtung braucht es etwas (ein paar ms) bis der Kondensator an AREF entladen ist.

Es fehlt auch irgendwie eine Bregenzung das der PWM Wert nicht unter 0 gehen kann - das wäre schlecht, selbst wenn es nur ausnahmsweise mal bei einer Störung passiert.

erfolgstyp
14.12.2010, 17:17
danke erstmal für deine antwort leider funktionierts immer noch nicht
ich hab jetz mal was rein programmiert damit die pwm nicht unter null geht und gleichzeitig noch was dass sie nicht über 255 kommt nur is der effekt ähnlich jetz beginnt die pwm halt nicht von vorn sonder bleibt beim erreichen des untersten werts einfach stehen...

kanns vllt dran liegen dass der adc beim messen dess istwertes mit der pwm durcheinander kommt?

und was meinst du mit dem umschalten der referenzspannung??

im anhang nochmal der geänderte code

Besserwessi
14.12.2010, 21:16
Die eine Messung wird mit AVCC als Ref gemacht, die andere mit den internen 2,5 V. Das umschalten von AVCC auf die 2,5 V dauert viel länger als die Zeit die dem AD-wandler gegeben wird. Die Messung wird also nicht mit 2,5 V sondern wohl eher mit 4,8 V (etwa weniger als AVCC) als Ref. ausgeführt.

Wenn die Spannungsversorgung stimmt, und da keine größerer Kondensator am PWM Ausgang hängt, stört das PWM Signal den ADC nicht wesentlich.

Beim neuen Code teil stimmt da glaub ich auch noch was nicht - da kann nach den Inc R22 auch noch der Fall mit DEC R22 durchlaufen werden.

erfolgstyp
15.12.2010, 07:53
ich messe jetzt beide werte mit der internen referenzspannung von 2,56V aber das ergebnis ist immernoch das falsche

meine einzige idee wäre das mit der pwm gewesen aber wenn du sagst daran liegts nicht fällt mir auch nichts anderes mehr ein

bei dem neuen code kann ich keinen fehler erkennen:
r21 wird mit 1 verglichen und wenn r21 größer gleich 1 ist überspringt er den inc befehl (nur wenn r21 0 wäre würde incrementiert). bevor ein overflow auftreten kann wird wir r21 halt auf 255 überprüft und wenns kleiner ist wird das decrementieren übersprungen. dass beide fälle durchlaufen werden ist also unmöglich weil r21 nie beide werte (1 und 255)annehmen kann.

trotzdem danke für deine hilfe

erfolgstyp
20.12.2010, 20:12
um die veränderung von soll und istwert zu beobachten habe ich mir jetz ein lcd dazugebaut. der sollwert ist wie erwartet nahezu gleich (+-5 Digit) leider ist das beim istwert genauso (bei jeder messung 2 Digit). um auszuschließen dass es an meinem programm liegt hab ich einfach mal ein poti genommen und da ein paar werte gemessen und mit dem funktionierts wunderbar. meine einzige erklärung ist nach wie vor dass der adc mit der zu messenden spannung nicht klar kommt (pwm). ich hab jetz relativ viel drüber gelesen wie man pwm generierte spannungen glättet. aber ich versteh noch immer nicht wie ich den tiefpass (rc glied) dimensonieren soll?

uffi
14.02.2011, 09:45
Dimensionierung Tiefpass:

z.B. 10k Serienwiderstand in die Meßleitung zum ADC-Eingang und vor den ADC-Eingang parallel zur Analog-Masse einen Kondensator mit C.

Bestimmung C: C>>1/(10k*F_PWM*2*pi)

Wenn die PWM-Frequenz 100Hz ist, sollte C sehr viel größer als 160nF, also z.B. 1µF sein.

Andere Idee: synchronisiere die ADC Messung mit dem PWM Puls, das heißt: starte die Messung synchron zum high des PWM Pulses und sorge dafür, dass der Puls immer lang genug ist, um die Messung abzuschließen. z.B. durch entsprechend niedrige PWM Frequenz von 100Hz.