Guten Abend arbeite gerade an einem größeren AVR Projekt (das erste in dieser Größe). Möchte 8 Motoren per AVR regeln --> erste Idee: AVR --> 8Kanal DAC--> OP --> FET. Da DAC nett leicht zu beschaffen sind und nicht grad billig sind zweite Idee: AVR Software PWM mit 8Kanälen --> Glättung --> OP --> FET. Idee 2 hätte wesentlich mehr Vorteile für mich, aber da kommt eine kleine Frage in mir auf als AVR "Anfänger". Der AVR soll SoftwarePWM realisieren mit 8Kanälen --> kein Thema, aber er soll noch die Drehzahl der 8 Motoren ermitteln (zeitmessung des Impulsgebers pro Motor und dann daraus Drehzahl berechnen!!!). So das sollte ja noch machbar sein, aber es sollen noch div. Temperaturen gemessen werden und dann alle Messdaten (Drehzahlen,Temperaturen usw.) an Windows übermittelt werden. Schön die Messung der 8 verschiedenen Drehzahlen dauert schon etwas und dann soll jede Sekunde Windows neue Messwerte geliefert werden. Meine Frage ist kurz und bündig: der AVR soll da ziemlich viel auf eimal erledigen, kann man das hin bekommen??? Herzlichen Dank an alle, man ist halt noch Anfänger. Wünsche allen noch einen guten rutsch ins neue Jahr.
Hi Sammy, da ich heute nichts vorhabe, klappere ich mal eine Threads ab... ich habe sowas schon mal für drei Motore gemacht. genauer für drei Lüfter im PC. Die haben den Tachoausgang, der die Drehzahl ausgibt. Die gehen auf einen Port, den ich ständig abfrage. Über logische EXOR- und AND Vernüpfungen kann ich dann Änderungen und Flanken für jeden Tachoimpuls gleichzeitig auswerten. Diese Informationen gehen dann in die Software-PWM ein. Ich habe die Drehzahlen und die Temparatur auf einem LCD anzeigen lassen. (waren wie gesagt nur drei, passte prima drauf) die Info's kann man aber auch auf der seriellen ausgeben, klar. Wie in vielen anderen Threads schon besprochen, ist die Regelung von PC-Lüftern über PWM so eine Sache, da die interne Elektronik der Lüfter hier stellenweise verrückt spielt, wenn die PWM-Frequenz mit der Drehzahl interferriert(heisst das so?). Hier muss man etwas mit der frequenz probieren. Das PWM Signal zu glätten und zu sieben wurde auch schon mehrfach dikutiert, Vor-und Nachteile sollten abgewägt werden (Verlustleistungen im Linearen Betrieb der MOSFET's, interfrenzen PWM/Drehzahl, Anlaufsicherheit der Lüfter). Prinzipiell aber, rein von der Rechenleistung, stellt es kein Problem dar, zusätzlich noch andere Sachen zwischendurch zu machen. Man muss ja nicht den ADC einsetzen, wenn man Angst hat, das dieser zu langsam ist (isser nicht). Statt dessen gibt es ja auch I2C-Temparatur"Chips", oder die 1Wire Teile von Maxim/Dallas. AxelR.
Samy, alles was du dir da vorstellst wird wohl etwas schwierig in einen AVR zu packen, insbesondere die Drehzahlerfassung für 8 Motoren... Für einen Einsteiger würde ich empfehlen erst mal die Funktionaltät für einen Motor in einen kleinen Tiny XX z.B. Tiny15 oder 26 zu packen. Danach kann man sehen ob man die SW für 8 Einheiten auf einen Chip packen kann. Robert
Abend @ AxelR. Sagen wir mal so --> es handelt sich um 8 PC-Lüfter. Ah könntest du vielleicht bei Gelegenheit näher auf die Auswertung der Drehzahl bei deiner Steuerung eingehen -> da überlege ich schon die ganze Zeit wie ich 8 Drehzahlen messe und das sekündlich + genau!!! LCD hatte ich auch zu anfang --> bei 8 Lüftern zu unübersichtlich --> habe mir dann was anderes ausgedacht --> der AVR sendet alles per I2C an einen USB Controller und von da an einen kleine Win-Software marke Eigenbau. Zum Thema PWM --> habe ewig probiert --> die Drehzahl läßt sich zwar regeln aber die Lüfter machen Geräusche ( ja ich weiß man kann die Frequenz optimieren --> die Steuerung soll aber mit jedem Lüfter funktionieren, somit nix mit optimieren). Fakt ist der Lüfter braucht ne saubere Gleichspannung! Das war der Grund für DAC!! Tja die Dinger kosten und sind nicht leicht zu beschaffen, darum wieder PWM samt Glättung. Überlege immer noch PWM oder DAC??? Wie gesagt der AVR soll PWM erzeugen, gleichzeitig Drehzahl messen, Temperaturen erfassen und dann alles an Win. Nicht das sich das eine mit dem anderen in die Quere kommt z.b. AVR ermittelt grad Drehzahl (Zeitmessung der Impulse)--> jetzt kommt ein Interrupt oder irgendwas anderes hätte gern die Aufmerksamkeit des AVR --> das verfälscht ja die Zeitmessung und somit Drehzahl!! Hoffe Ihr versteht auf was ich raus will, weiß nett wie ich es schreiben soll. Unter Win würde man von Multitasking sprechen. Wenn ich PWM weg lasse und einen DAC einsetze kann ich das natürlich entschärfen da der AVR nicht mehr mit 8Kanal SoftwarePWM beschäftigt ist. Deswegen der Threand hier. Tja Fragen über Fragen. Zur Zeit habe ich das Gefühl bei meinem Projekt --> ein Schritt vor und zwei zurück. Thanks @ all.
Sorry Habe Freitag,Samstag und Sonntag arbeiten dürfen wobei Samstag und Sonntag 12 Stunden Schichten waren -> habe mir zur Entspannung ein paar Bier auf gemacht --> Sorry wegen Rechtschreibung. Mir kam da grad ne Idee --> nehmen wir mal an ein AVR kommt mit dem allem nett klar weil er einfach zuviel zur selben Zeit machen muß --> was ist dann wenn ich statt eines "großen" AVR´s zwei 2 "kleine" AVR´s nehme??? Der eine macht PWM + Daten an Win und er andere Drehzahl- und Temperaturerfassung????? Nur so ein Gedanke in mir!!!
Hi, du machst den gleichen (Denk)Fehler wie ich, super. Da ist soo viel Zeit zwischendurch! den einen port nimmst du für die tachosignale. alle 1ms (timerint) fragst Du die ab. um jetzt festzustellen, welcher pin sich geändert hat, vergleichst den alten portzustand mit deinem aktuellen aenderung=port_aktuell eor port_alt. wenn hier das ergebniss >0 ist, dann springst Du in eine schleife und klapperst das ergebnis ab. erst aenderung AND 1, dann aenderung AND 2, aenderung AND 4, AND 8 usw. Diese einzelnen Abfragen speichserts Du und hast für Lüfter 0-7 je das dazugehörige Bit isoliert. Im SRAM machst Du dir acht korespondierende Variablen, die Du ebenfalls in dieser Schleife hochzählst. Nach 1000 Timerinterrupts nimmst du die Ergebnisse der einzelnen SRAM-Variablen, multiplizierst mit 60,schreibst das Ergebnis zurück, gibst die Ergebnisse über die UART an deinen FTDI Chip und löschst die Variablen. In dieser Zeit ist dein 1ms Timer gesperrt, damit nichts abgefragt und/oder hochgezählt wird. Wenn Du alles ausgesendet hast, gibts du den ms-Interrupt wieder frei und die Messerei geht von vorne los. Du kannst doch nach 1000ms ruhig eine Pause in der Zeit machen, wo deine Ergebnisse ausgewertet werden. In dieser Pause kannst Du dann noch in aller Ruhe deine 8ADC's abklappern, die Tabelleneinträge für die NTC's abgrasen und dise Info's auch noch mit ausgeben. Der PWM-Zyklus ist davon unberührt: du hast ja nich einen timer. Das ist dann aber ein andere Geschichte... Die Art und Weise, wie du die Temparatur messen willst, sollte klar sein. Nimmst du NTC's, must Du obacht geben, das der Strom durch diese nicht zu groß wird! Sonst erwärmen sich diese selbst ein wenig und verfälschen dein Messergebins erheblich. Im Forum ist die Messerei mit diesem Dallas 1Wire Chip schon ausführlich durchgekaut worden. Kannst aber auch einige LM76 verwenden. Die PWM Frequenz muss nur ca 10x höher sein, als deine schnellste gewünschte Änderung der Drehzahl. Da Du sowieso nur minimum alle Sekunde die Drehzahl ändern kannst, reichen 100Hz PWM (locker) aus. 10K in Reihe und dahinter 22uF gegen Masse gibts Du auf die Basis von irgenteinem NPN, Kollektor an VCC(5V?) und Emitter über 1K nach Masse. Dann hast Du am Emitter bei 100%PWM ca. 4.2V anliegen bei 50% ca. 2V. Damit sollte sich was anfangen lassen. Etweder mit OPV und Faktor 3 verstärken, oder mit einem 2ten Transistor (V ebenfalls=3 Gegenkopplung!). Das ist das kleinste Problem! Ich habe mit Absicht keinen Codeschnipsel reingestellt -gemein, ich weis-. AxelR.
@ AxelR. Danke für deine Antwort. Das mit dem Codeschnipsel ist ok --> will es ja selber schreiben bzw. was lernen bei!! Eine Sache wirft aber Fragen in mir auf --> >>Der PWM-Zyklus ist davon unberührt: du hast ja nich einen timer. >>Das ist dann aber ein andere Geschichte... >PWM ohne timer???? Wie soll das gehen???
danke, nicht nur einen Timer, kannst also den timer2 hernehmen, wobei der oc2 interrupt ziemlich weit hinten liegt in der Tabelle, glaube ich. Aber bei den geringen Refreshraten, egal. Auf 100 U/min kommts sowieso nicht an. Merkt keiner...
Guten Morgen Als erstes mal herzlichen Dank an alle User für die schnelle Hilfe. @AxelR Noch ne ganz kleine aber wichtige Frage "10K in Reihe und dahinter 22uF gegen Masse" Ah wie kommst du auf diese Werte?? Bei meinen Schaltungen ist es mir wichtig das alles sauber berechnet wird und alles Hand und Fuß hat --> so Dinger wie "hauen wir mal ein Bauteil mit dem Wert xyz rein und schauen ob`s funtzt" ist nett mein Ding. Wie berechnet man das ??? RC-Tiefpaß ??? RC-Siebung??? Sorry für die laienhafte Frage --> meine Ausbildung ist schon 8 Jahre her und seit dem nie mehr gearbeitet in dem Beruf, schade könnte mich in den Arsch beissen. Wenn jemand mir das erklären kann, vielen vielen Dank
Tau = R * C (Zeitkonstante) 50% = 0,7 Tau (50% Pegeländerung)
Oh Samy, ich will nicht in Ungnade fallen...;-)) Bei mir wurde auch mal alles berechnet, das gibt sich im Laufe der Zeit. 10x10E3 * 22x10E-6 = 220 millisekunden 220x0.7 = 154 millisekunden, sollte also passen Gruß Axel
Zum Thema Lüfterregelung hab ich auch noch einen Vorschlag: (Ist nur ne Blitzidee und nicht sehr weit durchdacht) Man nehme sich einen Port pro Lüfter der geregelt werden soll, der Port erzeugt eine (für einen uC) geringe Frequenz, diese Frequenz auf einen IC der Hz proportional zu Volt umwandelt. Die Spannung an einen OVP und über diese Spannung den Strom regeln. Würde das Funktionieren? MFG kinglazee
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.