Hi,
ich hab es endlich geschafft!!
Nachdem ich im Hardware-Teil meiner ersten Version total gescheitert war, ist meine zweite Version technisch einwandfrei! Das Teil lässt sich problemlos proggen, alle Ein-/Ausgänge machen was sie sollen etc!
So konnte ich den letzten Monat damit verbringen, das entsprechende C-Programm für das Teil zu entwickeln! Und glaubt mir, das war nicht leicht. Ich und proggen halt.
Alleine die letzten zwei Wochen habe ich nur mit der Behebung eines Fehlers zugebracht. Mein IR-Endschalter tat was er will. Ging ich mit dem Finger langsam Richtung Phototransistor, schaltete der Kasten entsprechend. Ging ich aber noch näher heran, so ging er wieder aus, noch näher ging er wieder an etc. o_O Eine Katastrophe!
Und woran lag es im Endeffekt?
Ich verwende einen 10bit-ADC, also der zerhackt die analoge Spannung in einen Wert 0-1024
Die Variablen, in denen der gemessene Wert schließlich gespeichert wird, hab ich allerdings nur als 8bit Variablen (0-256) definiert. So überlief die Variable ständig und diese kuriosen Effekte traten auf... *ARGH!!*
Also das Prinzip meiner Endschalter ist recht simpel:
Per Timer-Interrupt lass ich die IR-LED regelmäßig ein- und wieder ausschalten, mit einer Frequenz von 2kHz.
Mein ADC nimmt sich zum einen den Wert des hohen Spannungsniveaus, also wenn die IR-LED ausgeschaltet ist->Transistor (gegen Masse geschaltet) wird hochohmig->Spannung steigt an.
Dann geht die LED an und der ADC darf sich auch diesen Wert vom Transistor schnappen (Transistor wird niederohmig, ergo sinkt auch die Spannung).
Dann wird die Differenz der beiden Werte genommen und damit werden dann die LEDs/das Relais geschaltet.
Das sieht dann wie folgt aus:
(Das Bild lässt sich leider nicht hochladen, darum findet ihr es im Anhang!)
(Die anderen beiden Bilder zeigen wann sich der ADC die Spannungen "holen" )
Gelb ist die IR-LED
Blau ist die Spannung am Transi
Das Signal sieht einwandfrei aus! Natürlich steigt/fällt der Wert je nachdem wie weit ich weg vom Transi bin!
Geplant sind für die Zukunft noch diverse Sicherungsvorkehrungen:
- Der Watchdog des uC's soll einprogrammiert werden, falls meine Software mal verrecken sollte.
- Als Option möchte ich ein Signal der Endstufen des Reiner-Reglers an meinen uC legen damit, falls der Endschalter mal immer "was sehen" sollte, die Software nach einer bestimmten Zeit automatisch stoppt, eine Art Notabschaltung halt. Ein Pin ist zu dem Zweck schon auf der Platine reserviert!
Die Ein oder andere Sicherheit ist natürlich schon drin:
- Softwaremäßig: kein Auslösen durch fremdes Licht da ich stets die Differenzen der Spannungsniveaus nehme
Wenn externes Licht (Lampe/Sonne) auf den Endschalter fällt, so sinkt nämlich insgesamt das Niveau der Spannung, die Differenz bleibt aber die selbe!
- Hardwaremäßig: Falls ein Draht der Stromversorgung abreißt oder die Sicherung auslöst, so macht das Relais zu und ein Reiner-Regler stoppt
(reißt allerdings ein Schaltdraht, so können meine Endschalter natürlich auch nichts machen )
Öhm, Ergänzungen sind natürlich möglich (jemand Ideen?)
Wovon ich träume? Von dem sichersten Endschalter den es gibt!! Aus Liebe zu meiner (und Eurer?) Mechanik!
Für das kommende Event werde ich die Endschalter, sofern sie zuverlässig laufen, nicht mit irgendwelchen Funktionen erweitern. "Never change a running system"! Erstmal müssen die sich so bewähren!
Hier sind meine kleinen:
(auf den beiden Fotos ist noch die SMD-Diode/ SMD-Transi drauf, die werden aber auch noch durch bedrahtete ersetzt)
Und eingebaut (1 von 2):
(Nebenbei: Bemerkt jemand den Unterschied zu meinem alten LJ-Getriebe?? )
Und nicht zu vergessen, der Video-Beweis!