• 19.04.2024, 05:17
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Re: Membranpumpe "dimmen"

Dienstag, 21. Oktober 2008, 23:04

Zitat von »LotadaC«

... Kannst Du Deine Idee/Dein Konzept mit dem "4-Quadranten-Multiplizierer"(?) mal näher erläutern/erklären, Tom?
(Sagt mir so gar nichts - interessiert mich aber wirklich)

Das ist ein (alter) Begriff aus der Analogrechner-Technik.
FrüherTM hätte man TrueRMS-Converter so aufgebaut.
Für die Digitaltechnik bedeutet das nur, daß man mit Vorzeichen rechnen muß.

Zur Darstellung:
Ich hatte mir überlegt, die momentane Leistung auszurechnen: P = U*I
Da auch noch der Winkel (Zeit seit dem letzten Nulldurchgang) bekannt ist, kann man das ganz einfach auf die komplexe Darstellung abbilden (siehe Euler: cos p + isin p = e^ip).
Damit sind Wirk- und Blindleistung bekannt (= Realteil und Imaginärteil).
Wenn man die Wirkleistung (numerisch) bis 2*Pi integriert, bekommt man die Effektiv-Leistung - das ist hier besonders einfach, weil man bei äquidistanten Samples nur addieren muß.
Und die Effektiv-Leistung (ist-wert) wollte ich mit der Stellgröße (soll-wert) vergleichen.
Da noch ein bisschen PID und ggf. etwas Hysterese drumherum - fertig.

Das geht aber leider nur mit der direkt gekoppelten Schaltungsvariante, die Strom und Spannung als (digitalisierten) Analogwert vorliegen hat.

Bei der Optokoppler-Variante sind nur die Vorzeichen von Strom und Spannung vorhanden.
Da würde ich grob mal folgenden Ablauf in Betracht ziehen:

Loop:
warte auf Zustandswechsel USign (einfach aufeinanderfolgende Werte ver-XORen)
warte auf ISign == USign
warte Phasenanschnittswinkel (= Vorgabewert)
Zünde Triac
goto Loop

mfg, Thomas

Edit - hatte ich übersehen:

Zitat

Wenn ich das richtig verstanden habe, soll der Triac (entsprechend, des Dimmzustandes) verzögert nach jedem Spannungs-Nulldurchgang anschalten, und danach bei jedem Strom-Nulldurchgang aus. Aufgrund der Phasenverschiebung kann der sich aber bereits mit dem nächsten Spannungs-Nulldurchgang überschneiden, oder wie??

Den Triac mußt Du nur einmal kurz zünden.
Der bleibt dann von selbst so lange an, bis der Strom unter den Minimalwert (Haltestrom) fällt.

Re: Membranpumpe "dimmen"

Dienstag, 21. Oktober 2008, 23:48

Danke!

Das Brett vorm Kopf (Haltestrom des Triac) hab ich mal schnell abgeschraubt :-[.

Aber das mit den Vorzeichen ist mir noch nicht ganz klar.
Die OK schalten (jeweils) durch, wenn der Komperatorausgang lo ist, oder nicht?

Wann ist das der Fall?
(Ich dachte ... *****ah - jetzt wirds klar*****

Also in der "positiven Halbwelle" (nennt man das so?) spuckt der Komp-Ausgang irgendwas in der Nähe seiner pos. Versorgungsspannung raus (7,5V) (->OK sperrt).
In der "negativen Halbwelle" gehts dann gegen -7,5V (neg. Versorgungsspannung). Irgendwo dazwischen (idealerweise im Phasendurchgang (+ -> -) sollte der OK durchschalten.

Entsprechend andersrum (- -> +) wieder sperren.

Dann könnten die OKs am µC bei jedem Phasendurchgang ´n Interrupt triggern (also steigende UND fallende Flanke).
In der Spannungsdurchgangs-ISR ... nee... reicht da nicht der Interrupt des Strom-OK aus?
Stromdurchgangs-ISR (beide Flanken = Phasennulldurchgänge) -> vergleiche PinD3 und PinD4 --gleich--> Starte Timer (Dimm-Vorgabe).

Timer-ISR: zünde Triac und stoppe Timer

hmm
Vorraussetzung wäre natürlich, daß der Triac irgendwann mal gezündet wird, außerhalb der Timer-ISR

oder hab ich da jetzt ´n großen Fehler?

Re: Membranpumpe "dimmen"

Mittwoch, 22. Oktober 2008, 01:21

Hi,

Die Schaltung liefert tatsächlich nur das Vorzeichen - logisch 1 bei negativer Spannung bzw. Strom.
Komparator/OpAmp: Wenn In+ kleiner In- geht der Ausgang auf 0 und die LED im Optokoppler leuchtet.
Damit leitet der Fototransistor und am µC landet +Ub bzw. eine "logische 1"

Der Strom kommt allerdings indirekt:
wenn USign = ISign dann ist der Strom = 0 oder besser der Triac ist offen.

Zu den ISRs: Warum möchtest Du Dir (jetzt schon) das Leben schwer machen?
Betreib' das doch zuerst mal im Polling-Modus.
Wenn Du den Vorteiler für den Takt so einstellst, daß Du z.B. 2^16 Takte für eine Vollwelle (50 Hz) bekommst, wird auch das Timing abschätzbar.

Später kannst Du dann ISRs benutzen um die Zustände eines "einfachen endlichen Automaten" umzuschalten.

mfg, Thomas

Re: Membranpumpe "dimmen"

Samstag, 1. November 2008, 01:09

In+ > In- liefert 0V am Ausgang? ich dachte, das wäre dann ne negative Spannung... egal, jedenfalls schaltet der entsprechende OK durch.

Andere Frage: Interessiert mich wirklich USign = ISign, oder der Vorzeichenwechsel von ISign?
(Ok, aufgrund der Phasenverschiebung ist die erste auftretende Vorzeichengleichheit nach dem Spannungsphasendurchgang der Stromphasendurchgang)

So, dann bin ich das mit den Bauteilen nochmal durchgegangen.
Der Blindwiderstand sollte sich doch durch Widerstand und Kondensator substituieren lassen, oder?
R8: 470 Ohm, 1W
C1: 0,1µF, 275V(AC)
D3: 2x Schottky bis 100V, 3A
D1, D2: 7,5V Zenerdioden mit Pmax=0,5W (der erste Link war nicht mehr verfügbar)

Die Pufferelkos wie oben. (was ist mit zusätzlichen KerKos?)
Die Widerstände auch, aber reicht für R1/R2 0,25W?
Und was ist mit R10? würde da überhaupt `n 1W reichen (=R8 )?
Für OK1 `n LTV827 (gibts bei CSD)
Kann ich den MOC3023 durch einen MOC3021 ersetzen? (muß ich dann R13 verringern? (auf welchen Wert?))
andererseits zieht der dann ziemlich viel Strom aus dem µC-Pin...

Daß ich zum Testen erstmal `ne simple Schleife nehme, ist klar - aber wenn der Prozessor dann später noch (zusätzlich) was anderes machen soll, ist das mit ISRs sicher einfacher...

******************Edit*************************

mal den Schaltplan nach Eagle übertragen (ok, nicht besonderes):


und anschließend `n Layout draus gemacht:


Einwände?

Achso, sollte es nicht vollkommen Schnurz sein, "wierum" man P und N anschließt bzw den Stecker reinsteckt?

Donnerstag, 7. Mai 2009, 23:56

(*Thread such...*)

(*weiter such*)

(*noch mehr such*)

(*ahh ... hust ... keuch)

(*staub wegwisch*)

(*noch mehr Staub wegwisch*)

jetzt aber:

Also, das Teil ist inzwischen zusammengebaut - ich hatte aber diverse Probleme mit der Software

(zB funktioniert bei Bascom wait (us/ms) nur mit Konstanten - hab ich nicht gewußt... bis ich da drauf gekommen bin... :whistling: , oder diese Fuse im Mega88, die den Takt nochmal durch 8 teilt - die ist bei auslieferung gesetzt, ich hatte halt nur noch´n 88er hier, und hab `n Update draufgespielt und nach France geschickt. Dort lief der überhaupt nicht mehr... (wegen der Fuse, klar :cursing: )

Jedenfalls hatte ich erstmal einen ... äh ... "Periodenimpulsdimmer" (würde ich jedenfalls so nennen) implementiert. Also quasi nur jede 2te volle Periode an, oder jede 3te, oder 2 von 3 Perioden usw. Damit konnte ich zumindest die Hardware übergeben, regelte zwar, war aber deutlich hörbar. Außerdem war der Luftstrom nicht ... äh ... homogen genug.

Im Moment läuft das Prog mit Interrupts, und zwar in etwa so:

Spannungsphasen-Nulldurchgang löst einen Interrupt (Int0) aus (also auf beiden Flanken) -> ISR lädt timer1 (also den Zähler) mit 0 - delay in µs (der Timer läuft mit 1MHz - delay kann theoretisch ein paar Takte weniger als 10000 bis 0 (oder 1?) annehmen - 10000 entsprächen 10ms=1 Halbperiode) und startet diesen. -> Timer1-Overflow-Interrupt deaktiviert den Timer und zündet den TRIAC (nach Kontrolle der Stromphase usw).

So ... ab delay irgendwo zwischen 7500 und 6000 (also ca 4ms VOR dem nächsten Phasendurchgang = TRIAC verlischt) beginnt die Pumpe schwach zu pumpen - delay kleiner irgendwas zwischen 3000 und 1500 (also ca 2ms nach dem Phasendurchgang) hat keinen fühlbaren Unterschied zum Dauerbetrieb (Zündimpuls liegt immer an). Diverse Werte dazwischen ergeben die erwarteten fühlbaren und hörbaren Pumpenleistungen. Also zumindest ohne pneumatischer Last - was sich verändert, wenn der Schlauch länger wird (durch den Kühlblock geht), wieß ich nicht, aber mMn sollte sich da, wenn überhaupt, nur der Bereich verschieben (kommt ja eigentlich nur etwas Länge und ein paar Kurven hinzu - ich kenne den Block nicht.

Soviel also zum Statement von Nitto Kohki...

Bisher ist das Gerät über Taster bedienbar, es gibt 8 Leistungsstufen (zuzüglich aus=0 und dauerbetrieb=9), angezeigt über eine Siebensegmentanzeige.

Ich habe in der Firmware bereits eine Prozedur, die vom HW-UART ein word entgegennimmt, und dieses als neues Delay auswertet. Demnächst wird sich dieser RS232<->TTL Schnitstellenwandler auf den Weg machen, dann sollte sich die Einstellung genauer vornehmen lassen.

Damit ich nicht dauernd `n Chip hinschicken muß, hab ich noch´n USB-ISP-Programmer gelötet ;) , der geht gleich mit (die µC-Platine hat den Standard-10Pin-Header von Atmel mit drauf).

Solange nur eine Pumpe ( oder beide Parallel) geregelt werden, gibts keine weiteren Probleme, ABER wenn ich die Pumpen (wie beabsichtigt) antiparallel betreibe, ist meistens eine spürbar schwächer (teilweise sogar ganz aus) als die andere. Mir ist noch nicht klar, ob das irgendwelche Induktiven Effekte der Pumpen (=Spulen) sind, oder im Programm irgendwas nicht stimmt. (Die Optokoppler zB schalten ja auch nicht im Phasendurchgang (also bei 0V, sondern bei der Spannung, bei der Ihre LEDs leuchten (sofern man bei IR davon sprechen kann)).

Wie die Ing´s halt so sind, ist ihnen jetzt selbst das pulsieren an der Netzspannung zu viel (also wenn die Pumpen parallel direkt am Netz hängen - 50Hz, antiparallel wär ihnen lieber... :rolleyes: )

Wenn die diese "Störung" wirklich an den antiparallel geschalteten Pumpen liegt, wird´n neuer Prototyp fällig (mit 2 TRIACs, jeweils mit eigener Stromphasenmessung - Die Spannungsohase sollte ja identisch sein (und sich auch auf der Sekundärseite des Trafos messen lassen)), oder?

BTW: Danke, Tom ;)

Sonntag, 10. Mai 2009, 17:52

Ähäääm. ich hab hier ne kleine 230V Luftpumpe stehen, die hat leider nen gebrochenen Alu-Zylinderkopf, und deswegen ne defekte Kolbendichtung
Die ist von der Größe her so groß wie ein ATX-Netzteil, und hat nen normalen Motor dran.

Oder sowas Richtung Airbrush Kompressor.

Wäre es für dich und die Ing's nicht einfacher und billiger sowas zu verwenden ?
Schöne Drehzahlregelung, etwas cos-phi daneben ausgleichen und fertig? Notfalls nen DC statt AC Motor dran...?

Ich weiß das mit den Platinen und Software macht auch mal Spaß, aber irgendwann ist doch das was man reinsteckt zu dem was rauskommt total daneben.
..Wenn ich da an meine PWM Sitzheizung denke.. Ok, die kann man auch für ne Herdplatte verwenden, aber die 20h proggen in Assembler + Platinenbau waren viel teurer als ein Fertigteil.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »PsiQ« (10. Mai 2009, 17:54)

P4/3Ghz@WaküEigenbau; AmdAthlonXP1700+@cuplex; Q6600@wakü cuplex;i7-5820k@wakü cuplex;I7-10700k@wakü cuplex
4870 @Wakü-selbstbau; R9-290@wakü aquacomputer; Zotac 980TI@WaküZotac; RTX2080FE@WaküAquacomputer; RTX3070TI@WaküBykski

Sonntag, 10. Mai 2009, 20:06

Klar wäre es das Beste, die Pumpe(n) anhand der Anforderungen (Temperaturbereich, Förderleistung (<-Saugfähigkeit), Regelbarkeit und (war vorher nicht gefordert: ) Homogenität des Luftstromes) auszuwählen - sowas in der Art hab ich ja auch schon vorgeschlagen (falls man die überhaupt ( in `nem ordentlichen preislichen Rahmen) findet. Für den nächsten Prototypen werde ich wohl "was ordentliches/passendes" suchen dürfen ;) . Aber bisher waren (mir) diese beiden Pumpen vorgegeben. Und letztendlich ist es js jetzt regelbar - welche Anschnittspausen (-winkel ? ) sie sich jetzt aussuchen, ist Ihr Bier. Ich will jetzt nur noch implementieren, daß er statt der als Konstante vorgegeben Werte für die Stufen, entsprechende Werte aus dem Eeprom lädt. Und diese sich halt über ein serielles Kommando (+Parameter) ins Eeprom schreiben lassen.

(nochmal zu den Anforderungen an die Pumpen, zusammengefaßt: Durch einen, mir unbekannten Block, soll flüssiger Stickstoff zwecks Kühlung gesogen werden. Ob er da noch flüssig ist, ist mir nicht bekannt. Ich gehe aber davon aus, daß er während der Passage durch die Pumpe(n) bereits gasförmig ist - trotzdem aber noch sehr kalt...

Zweitens soll das ganze regelbar sein - mir wäre eine µC-kompatible Lösung (TTL...) am liebsten, da ggf Ansteuerung über einen PC ... erwünscht werden könnte (später...). Ist ja bei dem Prototypen im Prinzip so.

Drittens stört sie jetzt das "knattern" (also auch, oder insbesondere das des Luftstromes), aber da kann ich ja mit diesen Pumpen nicht wirklich was machen (außer Antiparallel betreiben), die hängen halt direkt an den 50Hz Netzfrequenz :rolleyes: . (eigentlich ist also so eine einfache ...äh... "halbphasengleichgerichtete Singlehub Schwingspulenpumpe" ( :D ) ungeeignet, womit ich den Bogen zum Postbegin geschlossen hätte...

Naja, wenn´se (von mir) `nen 2ten Prototypen aufgelegt haben wollen, knie ich mich in die Hardware nochmal rein - Nr1 läuft ja eigentlich, wie (ursprünglich) gefordert.

Sonntag, 10. Mai 2009, 23:01

Hmm. Das Knattern könntest du durch ein zwischengeschaltetes Volumen Dämpfen, evtl ein Gummiball oder sowas.
Also [Pumpen]--[Puffer an T-Stück] -- [Stickstoffleitung]
Probiers mal, evtl klappts.

Bei meinem Auto-Vergaser wird eine Drossel und eine Unterdruckdose als Puffer verwendet (Beschleunigungsanreicherung)
P4/3Ghz@WaküEigenbau; AmdAthlonXP1700+@cuplex; Q6600@wakü cuplex;i7-5820k@wakü cuplex;I7-10700k@wakü cuplex
4870 @Wakü-selbstbau; R9-290@wakü aquacomputer; Zotac 980TI@WaküZotac; RTX2080FE@WaküAquacomputer; RTX3070TI@WaküBykski

Montag, 11. Mai 2009, 19:37

Das nennt man dann einen "Windkessel", nur eben andersrum... ;)

Hatte ich auch schon vorgeschlagen, quasi als pneumo-mechanischen Kondensator... mit der ganzen Machanik und dem Einbau hab ich aber nix mehr zu tun.

trotzdem Danke für Deine Überlegungen/Mühe...

(Ich hoffe ja immer noch, daß die mir mal ein paar Bilder von der Kiste schicken ( zwar schon über Skype gesehen - Anschluß und µC-Tausch instruiert - aber die Quali der Kamera/Übertragung :thumbdown: :D ))

Freitag, 7. Januar 2011, 13:47

Ja ja, lang ist's her...

nach langer Zeit habe ich den ganzen Kram nochmal komplett neu gemacht. Jetzt hat jede Pumpe ihren eigenen TRIAC, der auch über einen eigenen µC-Pin angesteuert wird. Im ca 80 Zeilen langen Code (Assembler) geschieht in etwa folgendes:

Initialisierung von timer0 als fastPWM mit OutputCompare (invertiert - match=High Pegel, Überlauf=low Pegel) auf beiden Pins -> Pumpen

Initialisierung von int0 (Spannungs-Nulldurchgangsdetektion, wie gehabt) als Interrupt (beide Flanken)

Initialisierung des ADC (mißt Poti zur "Leistungsvorgabe", ADC wird "autogetriggert", und zwar durch den Überlauf des timers)

Initialisierung von USART0 (Ausgabe des eingestellten "Phasenanschnittswinkels")

So, in der int0-ISR wird der timer neu geladen, und zwar so, daß er innerhalb der nächsten 10ms sicher(!) überläuft. Außerdem wird eine byte-"Variable" inkrementiert. Bei deren Überlauf (carry-flag) wird der Inhalt des OutputCompareRegisters in's UartDataRegister geschrieben (=Datenausgabe ca alle 2,5s).

In der "Ich hab fertig"-ISR des ADC wird lediglich der Inhalt des ADC-Ergebnis-Registers (left adjusted, nur 8bit) in die beiden OutputCompareRegister geschrieben. NAch der Initialisierung wartet der µC eigentlich nur noch auf die Interrupts - die eigentliche Dimmung läuft ja in Hardware...

Wenn man die Pumpen antiparallel an die Platine hängt, werden aus den 50Hz Vibrationen 100Hz

So siehts jetzt aus:



Herzlichen Dank nochmal, insbesondere an Tom

Freitag, 7. Januar 2011, 19:04

Erstmal nice Platine und auch generell sieht echt sauber verarbeitet aus!
Was für ein Bauteil sind diese Blauen Anschlussklemmen? Suche schon länger danach nur habe noch nichts gefunden.

Sascha
Out of Style, but it's Retro!

Freitag, 7. Januar 2011, 21:05

Hmm... laß mich mal nachdenken... äh... blaue Anreihklemmen vielleicht? :P ;) :D

gibts zB bei CSD unter Warengruppen -> mechanische Bauteile -> Anschlußklemmen, oder bei Reichelt unter Bauelemente -> Steckverbinder -> Klemmen -> Leiterplatten-Anschlussklemmen...

Montag, 10. Januar 2011, 22:31

bei pollins resterampe gibts die auch .. ^^
Sind sogar brauchbar ;)
Westerwälder ist das höchste was der Mensch werden kann!