Jetzt - am Nachmittag - regnet es nicht mehr, aber es gibt etwa in der halben Schweiz Alarmstufe 2 beim Hochwasser.
http://www.hydrodaten.admin.ch/warnungen-vorhersagen/de/#hochwasserlageJa, man kann den Mikrokontroller weglassen, aber man kann das Signal des Hallsensors nicht direkt als Ansteuersignal für den Thyristor verwenden.
Der Thyristor braucht eine Impulsfolge zur Ansteuerung, die durch die steigende oder fallende Flanke des Hallsensors verzögert angestossen wird. Bei einer konstanten Drehzahl kann die Verzögerung manuell eingestellt werden.
Die Grafik "Operation_Code.jpg" von Nyemi zeigt, was der Mikrokontroller macht:
Angesteuert wird der Mikrokontroller vom Hallsensor.
Durch die positive oder die negative Flanke des Hallsensors (wählbar, nehme ich an) wird im Mikrokontroller eine tabellengesteuerte drehzahlabhängige Verzögerung erzeugt ("Ignition timing delay" (ignition advance curve / RPM). Der "SCR Output" ist ein Signalpaar, bestehend aus dem invertierten und nicht-invertierten Ausgangssignal des Mikrokontrollers. Man sieht in der Grafik, einerseits, dass dieses Signal bei 0..917 RPM weniger verzögert ist, als bei 917..2500 RPM, und andererseits, dass das Signal aus einer Impulsfolge besteht: 0.6ms zünden, 1ms warten, 0.6ms zünden, 1ms warten, usw.
Die Ersatzschaltung muss das Gleiche machen, wie der Mikrokontroller, also eine bestimmte Impulsfolge liefern, angestoßen durch den manuell richtig justierten Hallsensor.
Im Programm Ay75218.txt werden andere Werte für die Pulsfolge verwendet, als in der Grafik, die Grafik zeigt somit wohl nur das Prinzip.
Werte nach der Initialisierung durch LoadSettings():
SensorDigiDeg = 34; // Sensor Digi-Degrees BTDC
LowRPM_Delay = 27; // Low RPM Advance Digi-Degrees (3 RPS - 916 RPM)
StartDelay = 14063; // uS delay for start spark(s)
MSD_Start_Spark = 3; // Total number of sparks to fire on the first starting revolution
MSD_Low_Spark = 1; // Total number of sparks to fire when in LowRPM mode (120-915 RPM)
Max_MSD_Rev = 102; // Maximum RPM to use MSD at (value is in terms of CurrentRev + 1)
MSD_Spark = 1; // Total number of sparks per revolution when RPM is below Max_MSD_Rev
MSD_Delay = 40; // uS in between trigger pulses for MSD (minimum 63 IME)
Der im Schema eingesetzte Optokoppler CNY17F-3 ist in der gezeichneten Betriebsart für 40us Pulsfolgen am Limit.
Es ist nicht sicher, dass das Printlayout auf Anhieb gelingt, wenn die Hochspannungselektronik und die Timerschaltung gerade nebeneinander liegen.
Deshalb - und aus anderen Gründen - hat Nyemi wahrscheinlich auch einen Optokoppler eingesetzt.
Ich würde die analoge Timer-Schaltung aus EMV-Gründen auf einen separaten Print auslagern.
Mit dem Programm CDI-2012_12F1840_Serial_Com_v2.0b2 ließe sich das Timing für experimentelle Zwecke über einen Rechner einstellen.
Es gibt für mich Unklarheiten im Programm des 12F683. Aber es wäre relativ einfach, das auf einem Steckbrett auszuprobieren (nur den Mikrokontroller, mit einem Rechteckgenerator anstelle eines Hallsensors und einem KO als Messgerät).
Solange man das Timing nicht kennt, ist die Mikrokontroller-Lösung