Hallo zusammen! Normalerweise ist ja die SuFu von Mikrocontroller.net ausreichend, um 99% aller Probleme zu klären, was ich auch immer gern genutzt habe. Allerdings habe ich mir jetzt eine Schaltung ausgedacht, bei der ich mir nicht sicher bin, ob diese so funktioniert. Also habe ich mich mal angemeldet um eure sehr geschätzten Meinungen zu hören: Mein Projekt ist die Erneuerung einer Regelung für einen Holzvergaserkessel. Realisiert habe ich das Ganze mit einem Arduino MEGA (ATmega2560). Anzusteuern sind ein Lüfter mit veränderbarer Drehzahl und eine Umwälzpumpe. Mein Problem liegt nun in der Drehzahlregelung des Lüfters. Da er einen Kondensatormotor(230V) besitzt, fiel ein Frequenzumrichter nach Recherche hier im Forum von vornherein aus und ich habe mich für die Wellenpaketsteuerung per SSR entschieden. Die Ansteuerung des SSR's erfolgt per integriertem Optokoppler durch den Arduino. Und da fangen meine Probleme an: Aufgrund des recht umfangreichen Codes auf dem Arduino entstehen Zykluszeiten jenseits alles Guten, was die Steuerung des SSR's selbst mit Timer-Interupts äußerst unruhig werden lässt. Daraufhin habe ich mir die obige Schaltung ausgedacht. Darin wird das Relais über einen NE555 angesteuert, dessen Pulsbreite vom µC per PWM-Signal verändert wird. Mir stellen sich jetzt 2 Fragen: 1. Gibt es möglicherweise eine bessere Lösung? 2. Kommt es zu unerwünschten Schwingungen des 555 durch das ebenfalls pulsierende Signal vom µC? P.S. Den Sketch vom Arduino hab ich aufgrund einzigartiger Dämlichkeit meinerseits nicht mehr.
Nachtrag: Ich weiß, dass es auch Umrichter für Kondensatormotoren gibt. Diese kann ich mir mit meinem Azubi-Gehalt einfach nicht leisten.
Was soll der 555 besser können, als einer der 16 PWM-Ausgänge?
Hallo, ohne jetzt auf Deine Frage einzugehen: Du redest von Wellenpaktsteuerung, also minimale Ein- oder Auszeit wären dann 20ms (das wäre eine Welle bei 50Hz). Du willst mir nicht ernsthaft weiß machen, daß ein AVR da irgendwo ein Problem bekommen kann, wenn Du in einem vielfaches dieser Zeit ein Portbit Ein- oder Ausschalten mußt? Was machst Du mit dem Mega2560, was stört? Die Landung der Mondfähre berechenen? Ok, der Rechner damals hatte weit weniger Leistung und war ein wenig an seiner Grenze... Gruß aus Berlin Michael
@michael Ich sehe darin auch kein Problem, in beispielsweise 2 Sekunden den Ausgänge mehrmals an- und auszuschalten. Das war ja auch mein Lösungsansatz, als ich das Programm geschrieben habe. Ich nehme mal stark an, das irgendwo im Programmcode ein Fehler versteckt ist. Ich kann den nur leider nicht mehr beheben, da ich den Sketch nicht mehr besitze. Und das ganze Ding neu zu schreiben kostet mich Wochen. Das ist Zeit, die ich nicht habe.
Warum lässt du den NE555 nicht einfach weg? Bastian S. schrieb: > da ich den Sketch nicht mehr > besitze. Keine Backup-Platte zu Weihnachten bekommen?
:
Bearbeitet durch User
Das ist ja im augenblick der Fall. Der Arduino steuert direkt das SSR, allerdings vom Timing her so ungenau, dass der Lüfter durchaus auch mal mehrere Sekunden auf Vollast läuft und danach für ungefähr die gleiche Zeit aus ist. Hinterher denkt man immer an ein Backup...
:
Bearbeitet durch User
Bastian S. schrieb: > Der Arduino steuert direkt das SSR, > allerdings vom Timing her so ungenau, dass der Lüfter durchaus auch mal > mehrere Sekunden auf Vollast läuft und danach für ungefähr die gleiche > Zeit aus ist. Und du meinst, wenn du das über einen 555 machst, das es dann genauer wird wenn du den ungenau ansteuerst?
1. Da der Takt des NE555 erstmal unabhängig vom arduino läuft, denke ich das es genauer wird, ja. 2. Außerdem hat die Wellenpaketsteuerung im Programmcode einen Großteil des Platzes eingenommen. Mit dem 555 bräuchte ich nur nur den restlichen Teil des Programms rekonstruieren, was wesentlich weniger Aufwand macht.
By the way: die langsamst mögliche Hardware-PWM mit einem Atmega328p(!) hat eine Periodendauer von 1,5 Tagen, wenn man: 1: den 128kHz-Oszillator als Quelle für den Systemtakt nimmt 2: dessen Takt vorher noch durch 256 teilt (500 Hz) 3: den Systemtakt vor dem Timer noch durch 1024 teilt (0.49 Hz) 4: den 16-bit Timer nimmt und voll überlaufen lässt (7.4 µHz = 1.55 Tage) Alternativ hätte der Atmega2560 natürlich 8K SRAM, woraus sich ein ~65536-bit-Zähler bauen lassen könnte, der selbst bei 16 MHz Systemtakt erst nach 10^19741 Jahren überläuft. Wenn das nicht mal lang genug für eine Schwingungspaketsteuerung ist!
Bastian S. schrieb: > Außerdem hat die Wellenpaketsteuerung im Programmcode einen Großteil > des Platzes eingenommen. Was?
Bastian S. schrieb: > Ich nehme mal > stark an, das irgendwo im Programmcode ein Fehler versteckt ist. Genau. Also doch keine zu geringe CPU-Leistung. Bastian S. schrieb: > Ich > kann den nur leider nicht mehr beheben, da ich den Sketch nicht mehr > besitze. Ist jetzt nicht Dein Ernst? Bastian S. schrieb: > Und das ganze Ding neu zu schreiben kostet mich Wochen. Ist jetzt nicht Dein Ernst? Bastian S. schrieb: > Außerdem hat die Wellenpaketsteuerung im Programmcode einen Großteil > des Platzes eingenommen. Ist jetzt nicht Dein Ernst? Dazu kann ich wirklich nur: http://vignette3.wikia.nocookie.net/cardfight/images/8/8a/Triple_facepalm.png/revision/latest?cb=20131217081420
Man verzeihe mir, dass ich keinen perfekten Programmcode geschrieben habe. Da der Arduino mehr als miserabel läuft, stimme ich euch dahingehend zu, dass es noch Verbesserungspotential gibt. Ich entnehme euren Kommentaren, das ihr eine reine Software-Lösung bevorzugen würdet. Meine Erfahrungen auf diesem Gebiet sind begrenzt, weswegen das Schreiben eines solchen Sketches für mich sehr viel Zeit in Anspruch nimmt.
Bastian S. schrieb: > Außerdem hat die Wellenpaketsteuerung im Programmcode einen Großteil > des Platzes eingenommen. Wenn das so ist, dann ist es gut das du den alten Sketch nicht mehr hast. Der Neue kann nur mehr besser werden. Das mit dem 555 vergiss mal ganz schnell.
Ich merke schon, das es hier offensichtlich gängiges Benehmen ist, sich über Leute lustig zu machen, die weniger Erfahrung haben als die hiesige Elite... Ich habe eben Probleme mit der Konstruktion von Programmcode. Deswegen habe ich ja auch nach einer analogen Lösung gesucht.
:
Bearbeitet durch User
Die meisten hier machen sich sicher nicht lustig über dich, aber die Idee mit dem 555 ist schlichtweg bescheuert.
Aber die die einzige, die mir eingefallen ist. >Dazu kann ich wirklich nur: >http://vignette3.wikia.nocookie.net/cardfight/images/8/8a/Triple_facepalm.png/revision/latest?cb=20131217081420 Ich scheine eine andere Definition von "sich Lustig machen" zu haben
Bastian S. schrieb: > Man verzeihe mir, dass ich keinen perfekten Programmcode geschrieben > habe. Perfekte Programme verlangt ja niemand, aber die aller mimimalsten Grundlagen des Programmierens (Programmablaufplan, Backup, Versionskontrolle) sollten schon selbstverständlich sein. Ich hoffe, Du hast daraus gelernt, wie man es auf keinen Fall macht.
:
Bearbeitet durch User
>Ich hoffe, Du hast daraus gelernt, wie man es auf keinen Fall macht.
Das habe ich auf jeden Fall.
Dann fange ich mal mit der Rekonstruktion an.
Trotzdem Danke für eure Zeit.
Bastian S. schrieb: > Man verzeihe mir, dass ich keinen perfekten Programmcode geschrieben > habe. Da der Arduino mehr als miserabel läuft, stimme ich euch > dahingehend zu, dass es noch Verbesserungspotential gibt. Dann sei doch froh, dass der alte Sketch verlorengegangen ist und Du damit die Möglichkeit hast, ihn noch einmal zu schreiben. > Meine Erfahrungen auf diesem Gebiet sind begrenzt, weswegen das > Schreiben eines solchen Sketches für mich sehr viel Zeit in Anspruch > nimmt. Meine Erfahrung zeigt, dass das Neuschreiben sehr viel schneller geht als beim ersten Mal. Das dauert maximal 10% der Zeit und liefert trotzdem ein viel besseres Resultat.
Michael U. schrieb: > Die Landung der Mondfähre > berechenen? Ok, der Rechner damals hatte weit weniger Leistung und war > ein wenig an seiner Grenze... Der war nicht an seiner Grenze, der hatte nur zu viel Inputdaten weil Lande- und Rendevousradar irrtümlicherweise gleichzeitig eingeschaltet waren. Ach, ist ja auch egal...
Bastian S. schrieb: > Ich scheine eine andere Definition von "sich Lustig machen" zu haben Niemand macht sich hier lustig. Facepalm bedeutet Fassungslosigkeit. https://de.wikipedia.org/wiki/Facepalm
Ich hab die ganze Zeit nur diese blöde Steuerung im Kopf. Ich habe wohl ein wenig überreagiert. Tut mir leid, das ich so giftig war.
Bastian S. schrieb: > Da er einen Kondensatormotor(230V) besitzt Sicher, daß sich dieser Motor überhaupt regeln läßt? Nicht, daß Dir durch das ständige wieder Anlaufen der Kondensator um die Ohren fliegt. Welche Leistung hat denn der Lüfter. Vielleicht kann man ihn durch einen 24V DC-Lüfter ersetzen. Die lassen sich gut regeln und haben auch einen höheren Wirkunggrad (keine Wirbelstromverluste).
Ich habe auch schon über einen Austausch nachgedacht. Der Lüfter hat 120 Watt. Allerdings dachte ich immer nur an 12 Volt, von denen ich in der Leistungsklasse keine (bezahlbaren) gefunden hab. Bei 24 Volt sieht die Sache schon anders aus. Ich werde da mal im Netz nach suchen.
Hallo, Andreas S. schrieb: > Bastian S. schrieb: >> Meine Erfahrungen auf diesem Gebiet sind begrenzt, weswegen das >> Schreiben eines solchen Sketches für mich sehr viel Zeit in Anspruch >> nimmt. > > Meine Erfahrung zeigt, dass das Neuschreiben sehr viel schneller geht > als beim ersten Mal. Das dauert maximal 10% der Zeit und liefert > trotzdem ein viel besseres Resultat. Dem kann ich nur zustimmen. Gerade wenn man noch unerfahren ist, lohnt mehrmaliges neuanfangen. Man stellt dann meist fest, daß der neue Code viel kürzer, geschickter angelegt und besser strukturiert ist. Selbst privat als Hobby ohne Versionskontrolle usw. Allerdings sollte man sich auch da zur Gewohnheit machen, ziemlich oft einfach ein Archiv des Projektordners anzulegen mit Datum im Dateinamen. Gruß aus Berlin Michael
Man kann Pumpen, die ohne Losreissen starten können, auch mit einer 'normalen' Dimmerschaltung für induktive Lasten steuern, daran ist nichts schlimmes, das machen Danfoss und Friends auch so. Ein Ansatz wäre also, den Arduino mit einem Nulldurchgangsdetektor auszurüsten und mit einem der vielen Timer des MC einen Optotriac a là MOC3053 mit einen robusten 'snubberless' Triac zur Steuerung der Pumpe zu verwenden. Falls du weiter bei Wellenpaket bleiben willst, ist auch hier der ZC-Detektor mit Timer eine gute Hilfe, dann kann das fast alleine mit der Hardware des MC gemacht werden, ohne das das Programm da gross eingreifen muss.
:
Bearbeitet durch User
Die Pumpe ist kein Problem, sie soll nur An oder Aus sein. Timing spielt da keine Rolle. Ich habe mal kurz das Datenblatt des MOC3053 überflogen, sieht ganz interessant aus. Wenn ich das richtig gelesen habe, braucht der IC ja immer noch ein dauerhaftes Signal. Der Arduino hat ja unter anderem auch einen DS18B20, dessen Konversation bis zu 500ms dauert. Währenddessen weigert sich der Arduino vehement, etwas anderes zu tun. Ich habe mich jetzt für einen Umstieg auf 24VDC entschieden. Gleichstrom ist mir wesentlich angenehmer und sicherer. Nach einigen unangenehmen Erfahrungen lasse ich lieber die Finger von Netzspannung.
Bastian S. schrieb: > Ich habe mal kurz das Datenblatt des MOC3053 überflogen, sieht ganz > interessant aus. Wenn du die Pumpe nicht steuern, sondern nur ein- oder ausschalten willst, ist der MOC3063 noch besser geeignet, denn sein integrierter Nulldurchgangsdetektor schaltet den Haupttriac nur im Nulldurchgang ein, wobei so gut wie alle Probleme mit induktiver Last entfallen. Da der MOC wie eine rote LED angesteuert wird, sollte das auch einfachst mit dem Arduino gehen.
Die Pumpe wird ja auch korrekt angesteuert (durch ein zusätzliches SSR mit Nulldurchgangsdetektion) Wie gesagt, die Pumpe ist nur eine Kleinigkeit und bereitet mir keine Sorgen.
Vielleicht hilft dir das weiter: http://www.haustechnikdialog.de/Forum/t/118269/Kondensatormotor-Drehzahlregelung
Hallo, ich habe mit den DS18B20 noch nichts gemacht, jetzt nur das Datenbaltt überflogen. Die Timings des 1-wire spielen im max. 100µs-Bereich, nur eine Wandlung kann etliche 100ms dauern. Da braucht man aber nicht drauf zu warten, das macht er alleine. Ist bei parasite-Power sind einige Sachen zu beachten, die kosten aber auch keine wirkliche Rechenzeit beim µC. Wenn die Arduino-Lib also 500ms blockiert, habe sich die Leute wenig Mühe gegeben, da darf man dann eine passende Funktion selber schreiben. Fluch und Segen sowohl des Arduino-Konzeptes als auch von 1-wire-Komponenten. Einfach zusammenzubasteln und dadurch eingeschränkt in den Möglichkeiten der Kombinationen. Ein LM135 am Analog-In des Arduino würde selbst da weniger Problem machen, dafür muß man sich dann eben über Störungen auf der Zuleitung mehr Gedanken machen. Wie schreibt hier jemand immer: Einen Tod muß man sterben... Gruß aus Berlin Michael
Bastian S. schrieb: > Der Arduino hat ja unter anderem auch > einen DS18B20, dessen Konversation bis zu 500ms dauert. Währenddessen > weigert sich der Arduino vehement, etwas anderes zu tun. 0,5s Totzeit ist für viele Steuerungen nicht mehr tragbar. Da hat sich der Programmierer der DS18B20-Lib keine Mühe gegeben. Echtzeit sieht anders aus. Dagegen gibt es 2 Ansätze: 1. Man macht wichtige Sachen in Interrupts und sperrt jeweils nur für die Bitzeit (60µs) des DS18B20 die Interrupts. 2. Genau umgekehrt. Man startet mit einem Timerinterrupt (z.B. alle 1..10ms) jeweils eine Bitübertragung. Das Main und andere Interrupts sind dann kaum beeinflußt. Maximal hat man 60µs Jitter für andere Interrupts. Temperatur messen braucht man eh nicht öfter als alle 10s.
Michael U. schrieb: > Selbst privat als Hobby ohne Versionskontrolle usw. Allerdings sollte > man sich auch da zur Gewohnheit machen, ziemlich oft einfach ein Archiv > des Projektordners anzulegen mit Datum im Dateinamen. Ganz ehrlich, wenn du dich einn mal an ein SCM gewöhnt hast (und es womöglich eins ist das ohne Server auskommt) geht der das mindestens genauso leicht von der Hand wie nen zip packen und nen sinnvollen Dateinamen vergeben. Bastuan: schreib den Kram neu. Du wirst dafür sicher keine Wochen brauchen, es sei den du hast alles vergessen was du beim Letzten mal gelernt hast. Hinterher hast du ne Bessere Steuerung die du dann auch nachträglich anpassen kannst. Betrachte den Aktuellen Stand einfach als Prototyp der überarbeitet werden musst, dann wirst du damit sicherlich glücklich :)
@amiga Vermutlich hätts auch ein LM135 getan, ich hab eben nicht dran gedacht. Der Ds18B20 war meine Wahl, da man ihn ohne weitere Gedanken einfach anschließen und loslegen kann (mit Lib). @peda Ich hatte mich mal dran versucht, die Temperaturabfrage "manuell" zu machen, aber spätestens als dann Bitshift und bitwise or dazukamen, war ich einfach mit meinem Latein am Ende. @dicky_d Was anderes bleibt mir auch nicht übrig. Ich habe jetzt noch einen 24V-Lüfter bestellt, der lässt sich definitiv leichter regeln als ein Kondensatormotor.
:
Bearbeitet durch User
Ich habe nach einiger Suche noch eine unfertige Version des Programms gefunden. Es fehlt etliches und manche Teile habe ich am Ende anders implementiert oder weggelassen. Aber im Großen und Ganzen entspricht es der Endversion. In welcher Form kann ich diesen hier hochladen? Für einen Post ist er zu lang.
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.