Hi, ich habe eine Abzugshaube von Miele mit vielen Funktionen. Auf der Steuerplatine befindet sich ein Mikrocontroller IMRGN2 von NEC. Leider eine Sonderanfertigung für Miele und so nicht zu bekommen. Für eine Ersatzplatine will Miele 350 € haben. Dafür bekommt man schon eine neue Abzugshaube. Ich habe das Schaltschema abgezeichnet. Der Controller (5V VCC) hat 5 digitale Eingänge, wo in einer Matrix 7 Tasten hängen, und 12 Ausgänge, wovon 4 die Motoren steuern, 1 das Licht, und der Rest 10 LEDs in einer Matrix. Mit welchen Microcontroller(Board) könnte man diesen IMGRN2 ersetzen? Grüße Peter
Wie kommste auf die Idee das der Controller kaputt ist ?
Weil alle Spannungen da sind aber nichts mehr funktioniert.
Ein Replacement (z.B. mit AVR) ist ja nicht schwierig. Weißt du was der Controller machen muß ? Alles rein Binäre I/O's ? Was haben die 3 Widerstände (Pin 11,12,13) für Funktionen ?
Sehe ich das richtig Clock pin 1 über einen 1M an 230v? Währe ein grund für einen Ausfall nach Spannungsspitze ? Die Reset konstuktion über den Transistor hast du geprüft? Der Verfärbte wiederstand lebt auch noch? Was hat den die abzugshaube für Funktionen? Anfürsich ansteuern der Motoren bzw des motors in 4 stufen und Licht ? Sollte mit nem kleinen avr nicht so wild sein,
Du suchst einen pinkompatiblen ? Vergiss es. Nimm den uC, den du schon kennst und programmieren kannst, und verdrahte ihn freifliegend, beispielsweise einen ATMega8. Achtung, trotz Trafo ist die Schaltung nicht netzgetrennt.
Hallo Dennis, Über die Resistoren werden die Radialllüfter gespeist. Der Linke 700 Ohm ist mit Pin14 der rechte mit Pin11 verbunden. Also der Rechte Thyristor schaltet die Stufe 1 (Strom begrenzt durch 2000 Ohm), der linke Stufe 4 (Turbo - volle Pulle). Alle I/O's sind Binär. Die Funktionen kann ich noch nachvollziehen. Möchtest Du es genau wissen? Peter
@Dennis @Helmut Sind keine komplizierten Sachen. Hier ein "Gedächtnisprotokoll" der Funktionen: Der Schalter ganz links (Schublade) ist offen, wenn die Schublade rein-geschoben ist. In diesem Zustand lässt sich nur Licht bedienen. Die Taste „Licht“ schaltet den Relais (rechts oben) ein und aus. Wird die Schublade herausgezogen schließt der Schalter und es wird automatisch Licht und die erste Stufe der Lüfter eingeschaltet. Jetzt funktionieren alle anderen Tasten auch. Mit der Taste „Licht“ lässt sich weiterhin die Lampe steuern. Mit den Tasten „+“ und „-„ schaltet man die Stufen 1,2,3 und 4 rauf und runter. Taste „STOP“ schaltet den Lüfter ganz aus. Mit der Taste „+“ kann man ihn wieder einschalten. Die Taste „MIN“ begrenzt die Laufzeit der Lüfter, 1. Klick auf 15 Min, 2. Klick auf 30 Min, 3. Klick Funktion aus. Die Taste „#“ soll man drücken nach dem man den Filter getauscht/gereinigt hat. Es leuchtet dann das weiße LED (an B4). Nach einer bestimmten Laufzeit der Lüfter (30 Std oder so) geht das weiße aus und das rote LED an und erinnert an die fällige Reinigung. Entsprechend werden auch die LEDs gesteuert. Das LED „Stop“ geht an, wenn die Taste „Stop“ bedient wurde oder die eingestellte Zeit (15 bzw. 30 Min) abgelaufen ist. Das Reinschieben der Schublade schaltet alles aus. @MaWin Ist mir schon klar, dass ich keinen pinkompatiblen finde. Ist eine Sonderfertigung. Ich habe lange genug gesucht. Darum die Idee mit µC. Ich bin zwar ein studierter Elektroniker, aber mein Diplom ist schon 30 Jahre alt. Beruflich arbeite ich als Systemadministrator. Mit Euer Hilfe würde ich mich aber an ein µC trauen. Nur was für einen? Peter
Wieso hast du den Pin Clock genannt ? Hat die Haube eine Uhr "gehabt" ?
Rufus Τ. Firefly schrieb: > Am "Clock"-Pin liegt ein 50Hz-Signal an ... Aber zu welchem Zweck ? Echtzeituhr ? Genaue Counter ? Triac-Zündung ?
:
Bearbeitet durch User
Genau, es muss doch die 15 bzw. 30 Minuten Zählen. Es ist sonst kein anderer Taktgeber dabei. Vielleicht wird auch genutzt um die Triacs bei Null zu schalten.
:
Bearbeitet durch User
Ich denk ja diese MOhm-Schaltung wäre zu ungenau wenn da kein ADC-Pin das Ziel ist. Es ist wohl eher nur ein Pulsgeber für einen Timer. Die Motoren werden ja anders in der Geschwindigkeit geregelt und nicht mit Phasenanschnitt.
MaWin schrieb: >> Triac-Zündung ? > > Ja. Erklär mir das bitte. Braucht so ein Triac unbedingt eine gepulste Ansteuerung ? oder reicht da auch ein Dauersignal ? Ich denk ja diese Abzugshaube hat nur 4 Stufen die durch zuschalten von Widerständen geregelt werden ? Oder lieg ich da falsch ?
Peter Barton schrieb: > Mit Euer Hilfe würde ich mich aber an ein µC trauen. Nur was für einen? Von den Anforderungen her tut es mit Sicherheit ein mittlerer Mega a la Mega8/48/88/168/328 im 28 Pin Gehäuse. Du wirst lediglich ein Adapterboard bauen müssen wo der ISP Programmieranschluss drauf ist und die Pins des Mega sinnvoll auf den alten MC umgesetzt werden. Ich empfehle dir, nicht den Mega 8 zu nehmen, seine Nachfolger haben nämlich Pinchange Interrupts an allen Eingängen frei wählbar, so das du später nicht umstricken musst, wenn du was vergessen hast. Es kann auch nicht schaden, das 50Hz Signal z.B. an T0 oder T1 zu führen, dann läuft der 50Hz Kram im Hintergrund ohne zusätzlichen Aufwand. Wenn du jetzt noch die Buttons an einen Port, die LED an einen anderen und die Triacs an den dritten Port schaltest, sollte das schon klappen. Testen und Programmieren natürlich nur über Trenntrafo. Dennis Heynlein schrieb: > Braucht so ein Triac unbedingt eine gepulste Ansteuerung ? Nein. > oder reicht > da auch ein Dauersignal ? Ja, reicht. > Ich denk ja diese Abzugshaube hat nur 4 Stufen die durch zuschalten von > Widerständen geregelt werden ? > Oder lieg ich da falsch ? Nein, das sehe ich auch so. Die Jungs haben sich eine Regelung über Triac gespart und schalten stufig.
:
Bearbeitet durch User
@Peter Barton: Die Idee von Matthias mit der Adapterplatine wäre natürlich der Königsweg. Mit passenden DIP-Sockel(o.ä.) auf der anderen Seite. Außerdem Eröffnen sich dir ja Erweiterungsmöglichkeiten :) -Luftfeuchtesensor -Echtzeituhr/Temperatur-anzeige mit LED-Segment-Display etc. "Du hast doch mit Absicht den Blumentopf auf den Röhrenfernseher gestellt und übergoßen, nur daß du den TFT-Fernseher bekommst."
Matthias Sch. schrieb: > Du wirst lediglich ein > Adapterboard bauen müssen wo der ISP Programmieranschluss drauf ist und > die Pins des Mega sinnvoll auf den alten MC umgesetzt werden. Ja, wobei es essentiell wichtig sein dürfte die Platine über ein externes, galvanisch getrenntes Netzteil zu versorgen beim in-system-herumprogrammieren ;-).
:
Bearbeitet durch User
Ich würde die 50hz verbindung komplett weglassen. Für einen 15 bzw 30 minuten timer reicht auch der interne quarz des Avr. Kommt ja nicht auf die sekunde an. Genauso für die Filterwechsel interwalle. Eine stunde mehr oder weniger dürfte den Filter auch nicht verstopfen. Dann würde ich erstmal den alten Prozessor auslöten und die wichtigen anschlüsse auf z.b ein Steckbrett fühen. Zum Basteln würd ich erstmal auch auf 230v verzichten und die 10 bzw 5 volt über nezteile erzeugen. Die Triacs kannst du ja erstmal durch led'S "Simulieren" Ich würde dir auch zu einem At Mega raten. Kannst du Programmieren?
Ich wuerde 4 Schalter fuer die 4 Motoren einbauen und gut ist, es sei denn man braucht die Abzugshaube jetzt die naechsten Wochen/Monate nicht.
Ein Atmega168 mit Internem RC-Oszi und externem 32768Hz-Quarz ist ja auch kein so großes Drama.
Kein Drama aber muss eine dunstabzugshaube wirklich exakt nach 15 minuten asgehen? Halten wir die "schaltung" auf minimal so reicht ein zb mega168 ein paar kondensatoren und ein wiederstand. Dein Aufwand würde ich sagen sollte auch ein avr einsteiger nach einigen stunden schaffen? Zb einfach und simpel in Bascom. Denke unter 100 zeilen code könnte das ganze laufen.
Mit einem Ersatz-uC sollte man schwunghaften Handel betreiben können: http://forum.teamhack.de/hausger%C3%A4teforum/10617-miele-dunstabzugs-haube-da73/ http://forum.electronicwerkstatt.de/phpBB/Ersatzteile_Reparatur_Haushaltsgeraete/sons_miele_dunstabzugshaube_suche_ics_fuer_platine-t79700f61_bs0.html
@Peter Barton Also V1.0 full compatible version. Sollte nicht schwierig sein. Welche Programmiersprachen haste in der Hinterhand ? Ein Atmega168 hat genug Platz nach oben. Die Funktionalität würde schon ein kleiner Tiny2313 packen.
Vielen Dank für die vielen Antworten. Mit so großer Resonanz habe ich gar nicht gerechnet. Ich habe natürlich Programmieren gelernt, aber das war noch zu Dinos-Zeiten. Die Programmiersprachen gibt es wahrscheinlich heute nicht mehr. Wer kann sich noch an Cobol oder Fortran erinnern? Im Fortran habe noch große Programme für einen VAX-Rechner geschrieben . Später habe ich noch in Paradox (ObjectPAL) programmiert und klein bisschen LISP. In µC-programmieren habe bis jetzt keine Erfahrungen. Die Abzugshaube ist schon länger außer Betrieb und auf einen Tag oder Woche kommt nicht an. Ich habe das Thema lange nicht angepackt, weil ich mit meiner Solaranlage und Wärmepumpe beschäftigt war. Es wäre allerdings schön, wenn sie noch vor Weihnachten laufen würde. @Helmut Auch ich finde dass die Zeitmessung nicht so genau sein muss. Zur Sicherheit könnte ich auch die Verbindung zwischen 10 V und Strom-Netz auf der Leiterplatine durchtrennen. Die Triacs mit LED simulieren ist ne gute Idee. @Dennis Die Funktionserweiterung ist auch eine interessante Option. Die Haube könnte z. B. mit einem Piepton bei Anstieg der Feuchtigkeit oder Temperatur an Einschalten erinnern. Habe etwas nach dem Atmega168 gegoogelt, sieht vielversprechend aus. Wie muss ich das jetzt anpacken? Was und wo muss ich besorgen, um mit kleinstmöglichen Zeit- und Kostenaufwand größtmögliche Erfolge zu erzielen.
Peter Barton schrieb: > Wie muss ich das jetzt anpacken? Du brauchst einen Computer, den du anscheinend schon hast, denn du bis ja im Internet :-) Als nächstes entscheidest du dich für eine MC-Platform, du hast schon gemerkt, das die meisten hier Atmel empfehlen, die PIC Familie gibts aber auch noch. Dann besorgst du dir 2-3 MCs des gewünschten Types (ATMega8/48/88/168/328 sind alle pinkompatibel),passende IC Sockel dafür, ein paar 6 polige Pfostenfeldstecker für ISP, ein Säckchen mit 100nF Kondensatoren, Punktrasterplatinen, Fädeldraht, Lötmaterial und einen passenden Programmierer für den MC. Ich nehme den AVR ISP MkII, der rund 35 Euro kostet und alle Atmel MCs bis auf ein-zwei Exoten programmieren kann.Es gibt aber auch billigere wie z.B. den USBasp. Wenn dein Rechner mit Windows läuft, kannst du in Basic (Bascom) programmieren, C und Assembler laufen auf allen möglichen Systemen. Für C und Assembler kannst du unter Win das AVR Studio 6 nehmen, gibts kostenlos bei http://www.atmel.com Lade dir da auch die Datenblätter des MC.
:
Bearbeitet durch User
Helmut Lenzen schrieb: > Ich wuerde 4 Schalter fuer die 4 Motoren einbauen und gut ist, sehe ich genauso, das ist doch wieder Mal ein klassisches Beispiel wie man ein Gerät unnötig kompliziert und damit fehleranfällig macht. Wenn es wenigstens WLAN hätte um die Haube auch im Urlaub ein- und ausschalten zu können :-)
Walter schrieb: > Helmut Lenzen schrieb: >> Ich wuerde 4 Schalter fuer die 4 Motoren einbauen und gut ist, > > sehe ich genauso, > das ist doch wieder Mal ein klassisches Beispiel wie man ein Gerät > unnötig kompliziert und damit fehleranfällig macht. > Wenn es wenigstens WLAN hätte um die Haube auch im Urlaub ein- und > ausschalten zu können :-) Ist ja wie in der Vorstandsetage von IBM hier ;).
Hast du eventuell noch einen alten PC mit LPT drucker schnitstelle? Dann kannst du dir den 35€ Programier adapter sparen. Da reicht es schon 3 oder 4 leitungen vom Druckerport durch wiederstände zum Avr. Wenn du einen LPT noch hast kann ich dir genaue infos und schaltplan und programm gerne raussuchen. Ansonsten die usb variante z.b. Ebay 370490000223 ATMega8/48/88/168/328 ich würde vom 8 abraten da veraltet. 328 is etwas to mutch. der 168 is noch immer massig überdimensioniert aber passt schon.
Helmut B schrieb: > 328 is etwas > to mutch. der 168 is noch immer massig überdimensioniert aber passt > schon. Allerdings immer auf die Preise achten. Bei unseren lokalen Jungs (Segor) ist der 328 billiger als seine kleinen Brüder, und das nicht zu knapp. Der 168 kostet 4,90 und der 328 nur 3,50. Der 88 liegt mit 4,30 dazwischen.
:
Bearbeitet durch User
@Helmut B Danke für die Ratschläge. Da meine (Frei)Zeit noch knapper ist als die Kasse, wäre mir lieber ein fertiges Board, als selber zu löten. Auch weil ich dadurch, als µC-Anfänger, eine Fehlerquelle weniger hätte. Habt Ihr hier ein Tipp, was ich da nehmen könnte?
OK, Arduino Uno hat aber 14 digitalen IOs. Ich brauche 17, muss ich also drei von den analogen als digits missbrauchen, oder?
Peter Barton schrieb: > Ich brauche 17, muss ich also > drei von den analogen als digits missbrauchen, oder? Ja, das ist aber kein Problem. Jeder als I/O gekennzeichnete Pin eines AVR kann als Digital Ein-oder Ausgang dienen. Ich habe allerdings Bedenken wegen deiner begrenzten Zeit. Ich hatte es am Anfang so verstanden, das du nach neuen Horizonten Ausschau hältst und dich deswegen mit MC beschäftigen wolltest. Jetzt tendiere ich auch eher zu: Dennis Heynlein schrieb: > Walter schrieb: >> Helmut Lenzen schrieb: >>> Ich wuerde 4 Schalter fuer die 4 Motoren einbauen und gut ist, >> >> sehe ich genauso, >> das ist doch wieder Mal ein klassisches Beispiel wie man ein Gerät >> unnötig kompliziert und damit fehleranfällig macht. Da tut es ein einfacher 4 stufiger Drehschalter, den du an die Pins des ausgelöteten alten MC hängst. Nimm ne Version mit Kunststoffachse und gut is'.
:
Bearbeitet durch User
Soo, da bin ich wieder, und zwar ganz schön weiter (dank Eurer Hilfe). Ich habe mir ein Buch besorgt und ein Arduino Uno, habe ein Programm geschrieben und alles verdrahtet. Bin fast am Ziel, leider habe ich noch paar Probleme. Das größte ist, dass sich das Programm nicht hochladen will, wenn am Pin 0 (RX) etwas angeschlossen ist, es kommt dann die nichtssagende Meldung: (avrdude: stk500_getsync(): not in sync: resp=0x00) Weißt jemand, wie man das umgehen kann? Stundenlange googeln hat nichts gebracht. Diese Meldung wird hundertfach aufgelistet, aber meistens geht es um Fälle wo sich gar nichts hochladen lässt. Die Ausgänge von Arduino das sind doch alle OC oder? Welche Spannung können die vertragen? Nur 5V oder geht auch 10V? Weiter, überlege ich noch, wie kann ich erreichen, dass die Funktion einer Taste nur einmal ausgeführt wird, wenn die Taste mal etwas länger gedrückt wird. Im Moment schaltet sich z.B. das Licht ein und aus bei jedem Durchlauf des Programmes.
Peter Barton schrieb: > Die Ausgänge von Arduino das sind doch alle OC oder? Oder! > Welche Spannung > können die vertragen? Nur 5V oder geht auch 10V? Keine 10V.
Wir haben auch eine Miele Dunstabzugshaube mit der gleichen Steuerungsplatine. Sie war bis jetzt zweimal defekt, beim ersten Mal Netztrafo defekt beim zweiten Mal Kapazitätsverlust des 470µF-Kondensators im Netzteil. Wenn der Kondensator defekt ist muß man die Taste für die gewünschte Funktion immer öfter betätigen bis irgenwann gar nichts mehr geht. MfG Gisbert
@Dennis Am Pin 0 hängt der "alte" Pin 14 (siehe Schema oben). Ist definiert als Output. Zum Hochladen muss ich es trennen, danach wieder reinstecken und funktioniert. @hinz keine 10V? Das heißt ich kann die Triacs so nicht steuern? Im Moment hängen da noch LEDs. @Gisbert Bei mir war es eindeutig der µController.
Wenn du den RX-Pin belegt hast, mußte es wohl abziehen. (oder du machst dir deinen Eigenen Bootloader rein und nimmst einen nicht belegten Pin.) Beim Original ist noch nen Transistor zwischen Triac und Controller. Ich denk ja der MaskenROM/OTP-Controller macht normal auch nur 5 Volt.
:
Bearbeitet durch User
Matthias Sch. schrieb: > Ja, das ist aber kein Problem. Jeder als I/O gekennzeichnete Pin eines > AVR kann als Digital Ein-oder Ausgang dienen. Aber nur die DIP-Varianten der x8-er. Bei den anderen gibt es noch zwei ADC Eingänge ohne Logikfunktion. Peter Barton schrieb: > Die Ausgänge von Arduino das sind doch alle OC oder? Nein, sie sind so, wie Du sie programmierst. Also entweder TP, Eingang hochohmig oder Eingang mit Pullup. Nach einem Reset (welcher bei Programmierung automatisch ausgelöst wird) sind alle Portpins hochohmige Eingänge. > Welche Spannung > können die vertragen? Nur 5V oder geht auch 10V? Maximal Betriebsspannung - Steht im Datenblatt. > Weiter, überlege ich noch, wie kann ich erreichen, dass die Funktion > einer Taste nur einmal ausgeführt wird, wenn die Taste mal etwas länger > gedrückt wird. Im Moment schaltet sich z.B. das Licht ein und aus bei > jedem Durchlauf des Programmes. Du musst warten, bis der Taster wieder losgelassen wurde. Gruß Jobst
Vielen Dank für Eure Tipps. @Dennis Problem Nummer 1 beseitigt. Anstatt von Pin0 habe ich Pin13 genommen. Es funktioniert, keine Probleme beim Hochladen. Ich werde das Programm mit Sicherheit hier publizieren, möchte es aber nicht mit dem unfertigem "Zwischenstand" tun. @Jobst > Du musst warten, bis der Taster wieder losgelassen wurde. Genial, könnte von mir sein ;-) , habe ich implementiert, es funktioniert hat aber ein kleines Schönheitsfehler. Der Lauf des Programms wird angehalten, was Einfluss auf die LEDs hat. Hier muss ich doch etwas die Logik meines Programmes beschreiben. Wie auf dem Schaltplan zu sehen ist, sind die LEDs in einer Matrix verbunden. Genauso große Array wurde im Programm deklariert und speichert den Zustand der LEDs. Auch die Tasten sind in einer Matrix verbunden wobei die zwei Spalten der Tasten-Matrix den zwei Reihen der LED-Matrix entsprechen. Der zustand der Reihen (Pin 14 und 15) wechselt (01->10->01 usw.) bei jedem Durchlauf des Programms. Entsprechen wird die Array ausgelesen und die OUTs geschrieben. Wird das Programm durch den Klick auf eine Taste angehalten , erlöschen die aktiven LEDs der anderen Reihe. Ich dachte, die Ausgänge des Arduino "Open Collector" sind, da sie kein "High" zustand annehmen wenn ich auf sie HIGH schreibe. Ich musste an jeden Ausgang, der mit einem Inverter verbunden ist, ein 10k Resistor zu VCC anhängen, damit diese überhaupt funktionieren. Wenn die aber nicht mehr als 5V ertragen können, dann muss die Triacks-Steuerung geändert werden. Also noch ein Tranistor (npn) zwischen Arduino und vorhandene (pnp) Transistoren. Oder ich tausche die drei pnp gegen npn und dann brauche ich nur noch die 10k gegen 1k zu tauschen. Das müsste eigentlich auch funktionieren.
Willst du nicht die Tastenabfrage und Led-ansteuerung in einen Timerinterrupt legen ? Dein serielles Programm hört sich sehr nach SPS-Stil an.
Peter Barton schrieb: > Der Lauf des > Programms wird angehalten, was Einfluss auf die LEDs hat. Dann solltest Du Dein Programm überdenken. Ein Timerinterrupt ist auf jeden Fall ein guter Weg. Peter Barton schrieb: > da sie kein > "High" zustand annehmen wenn ich auf sie HIGH schreibe. Doch, wenn man es richtig macht, treiben die 20mA-40mA. Hast Du Dir schon das Kapitel I/O im Datenblatt angesehen? Gruß Jobst
Könnt Ihr bitte etwas genauer beschreiben wie mir ein Timerinterrupt hier helfen soll? @Jobst Welchen Dokument meinst Du? (bitte Link). Ich habe arduino.cc in allen Richtungen gescroolt und geblättert und kein richtigen Datenblatt gefunden.
Peter Barton schrieb: > Könnt Ihr bitte etwas genauer beschreiben wie mir ein Timerinterrupt > hier helfen soll? Da Deine LEDs und Taster offensichtlich gemultiplext sind, kann der Timerinterrupt sich automatisch darum kümmern, diese anzusteuern bzw. abzufragen, während Du im Hauptprogramm auf ein Ereignis wartest. Peter Barton schrieb: > @Jobst > Welchen Dokument meinst Du? (bitte Link). Ich meine das Datenblatt zum Controller - dieser wird von Atmel hergestellt. Suchen musst Du selber. > Ich habe arduino.cc in allen Richtungen gescroolt und geblättert und > kein richtigen Datenblatt gefunden. Ich kann mir nicht vorstellen, dass bei Arduino weder auf die Programmierung der Ports eingegangen wird, noch auf das Datenblatt des Controllers verwiesen wird. Vor allem nicht beides zusammen. Die Systeme sind für Anfänger gedacht und die meisten kommen damit klar - bekommen diese Info also dort, wo sie sie erwarten. Gruß Jobst
Hab nochmal auf den Schaltplan geschaut. Die LED's sind ja auf eigenen IO-Leitungen gemultiplext. Der Timerinterrupt wird einfach ausreichend schnell betrieben um das Flimmern der LED's beim Multiplexen zu vermeiden. Während dem Aufruf kann der Timerinterrupt zyklisch auch gleich die Tasten abfragen. Du mußt dir nur Gedanken machen wie du zwischen Timerinterrupt und Hauptprogramm den Status der Tasten austauschst.
:
Bearbeitet durch User
Sorry, das mit dem Timerinterrupt habe ich nicht hingekriegt. Wenn das in Verbindung mit einer einfachen "Wartefunktion": while(tasteOn==0){} überhaupt möglich ist. Wie auch immer, ich habe das Problem anders gelöst: mit einer zusätzlichen Variabel, die sich merkt, ob die Taste immer noch gedrückt wird oder schon wieder. Funktioniert einwandfrei. Soo, das Projekt ist damit beendet. Die Dunstabzugshaube hängt wieder in der Küche und meine Frau ist begeistert, (was auch der Zweck der Übung war.;-)) Mir hat auch Spaß gemacht, mein altes Hobby zu erfrischen. Ich bedanke mich recht herzlich bei allen, die mir dabei geholfen haben. Ich aktualisiere gerade die Dokumentation, und in der Hoffnung, dass sie noch jemand brauchen kann, werde ich sie hier hochladen. Im Anhang schon mal das Programm. Grüße Peter
Timerinterrupt ist nicht so schwierig wie es sich anhört. Du nimmst die Schritte für LED-Refresh und Tastenabfrage und kapselst sie in eine eigenständige Funktion, die so gebaut ist, daß sie jederzeit das Hauptprogramm unterbrechen kann. Du hast ja zumindest mal V0.1 fertig :) Die nächsten Versionen werden ja mit deinem Wissen in µC-Programmierung auch ausgefeilter werden. :)
Das ist schon die Rev. 0.3. ;-) Die Erste war noch „sehr seriell“ geschrieben, jetzt ist schon viel zusammengefasst und verschachtelt worden. Natürlich ist das Programm noch entwicklungsfähig, vieles kann man besser oder ganz anders machen. Ich denke, so wie es jetzt strukturiert ist, lässt sich mit dem Interrupt nicht viel bekleistern. Das Hauptprogramm tut doch nichts anderes, als der Reihe nach alle Tasten abfragen. Wird eine ON gefunden, werden entsprechend die OUTs und die Variablen gestellt. Das tut es Hundertmal in der Sekunde. Dazwischen noch synchron den LED-Zustand ausgeben und bei Bedarf die Timer runterzählen. Alternativ könnte man im Hauptprogramm nur die LED-Ausgabe und die Timer lassen, dazu noch eine Überwachung der vier Leitungen von den Tasten, die bei Ereignis ein Interrupt auslösen würde. Der ermittelt die Taste und leitet an eine passende Methode weiter, wo die sonstigen Behandlungen der Ereignisse ausgelagert wurden. Sicher lassen sich noch andere Szenarien ausdenken. Im Anhang paar Diagramme, die den Programmablauf erläutern.
Peter Barton schrieb: > Das Hauptprogramm tut doch nichts > anderes, als der Reihe nach alle Tasten abfragen. Wird eine ON gefunden, > werden entsprechend die OUTs und die Variablen gestellt. Das tut es > Hundertmal in der Sekunde. Hast du eine Entprellung für die Tasten?
@Alexander Nein, war nicht nötig. Das sind Folientasten, und wie Du auf dem Sachaltplan sehen kannst, an jeder Tastenleitung hängt noch ein Kondensator.
Peter Barton schrieb: > an jeder Tastenleitung hängt noch ein Kondensator. Das habe ich übersehen. Dennnoch eine denkbar schlechte Art zum entprellen, wobei die Kritik nicht gegen dich gerichtet, sondern an den Erbauer der Schaltung.
Ich habe jetzt auch den Schaltplan aktualisiert und noch paar Fotos beigefügt. Hier noch eine kurze Beschreibung ausgeführten Arbeiten für eventuelle Nachahmer. Der kaputte Chip von NEC wurde mit Dremel weggeflext und die einzelnen Beinchen rausgelötet. An deren Stelle kam ein etwa 20cm langes Stück vom alten Druckerkabel. Dann alles mit Heißkleber dingfest gemacht. Am anderen Ende des Kabels wurden vergoldete Stifte (aus einer IDE-Buchse) angelötet. Für Arduino-Stromeinspeisung wurde ein passender Stecker (übrig geblieben von einem Universal-Netzteil) genutzt, der an die 10 V auf dem Board angeschlossen wurde. Um alle Eingänge des ULN-Chips an den VCC anzuschließen, kam ein Resistor Terminator (10kohm) aus einem alten 5 1/4" Laufwerk zum Einsatz. Platz für ihn (zwischen Controller- und ULN-Chip) war schon auf dem Board vorgesehen. Dann wurden die drei Transistoren (gewonnen aus einem kaputten PC-Netzteil) wie auf dem Foto zu sehen ist, montiert. Darunter verlaufen zum Glück die VCC und GRND Bahnen. Die LEDs, die auf dem Foto noch zu sehen sind, dienten nur als Anzeige, ob der Triac angesteuert wurde. Die wurden danach entfernt. Als Stromquelle bei allen Arbeiten und Tests diente ein ausrangierte 11 Volt Notebook-Akku. Erst als alles fertig war und funktionierte, wurde die DAH an Stromnetz angeschlossen. Nicht vergessen vorher den USB-Kabel aus dem Arduino zu ziehen. Noch mal vielen Dank an Alle die mitgemacht haben, und bis zum nächsten Projekt.
Peter Barton schrieb: > mit Dremel weggeflext Dremel = Handmultifunktionswerkzeug des Herstellers Dremel Flex = Winkelschleifer der FLEX-Elektrowerkzeuge GmbH Sehr schön :-) Wenn Du auch noch den Code dazu packst, dann ist dem Nächsten mit diesem Problem auch weiter geholfen. Gruß Jobst
Danke für die Korrektur. Bloß keine Schleichwerbung. Ich habe also den alten Controller mit einem Handmultifunktionswerkzeug winkelweggeschleift.;-) Wie heißt das noch schön? Sämtliche Produktnamen sind Eigentum der jeweiligen Hersteller. Den Code habe ich am 8.12. hochgeladen. Gruß Peter
Ist das jetzt ein beendetetes Projekt oder wirst du den Source-code noch weiter optimieren ? V2 eventuell (mit Interrupten) ? Versuchst du dein nächstes Projekt mit einem losen Mikrocontroller ?
Dennis Heynlein schrieb: > Ist das jetzt ein beendetetes Projekt Ja, es funktioniert einwandfrei und ich muss mich jetzt um anderes liegengebliebenes kümmern. Nächstes Projekt? Mal sehen,im nächsten Jahr ist erstmal Garagendach fällig und PV soll auch drauf. Ich habe hier noch einen alten Geldspielautomaten von Merkur, so ein mit vielen Lämpchen und drehenden Scheiben, das wäre eine Herausforderung den wieder zum Leben zu erwecken. Dafür würde ein Arduino wahrscheinlich nicht reichen.
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.