Темата не е нова и предполагам проблема е решен, но искам да кажа нещо важно за по-начинаещите потребители на форума:
1. когато трябва да се прави нещо за 220 волта, вместо мрежовото напрежение и истинския консуматор, използвайте трансформатор и друг вид консуматор:
Например в случая вместо симистор, 220V и 1kW лампа, може да използвате трансформатор и на вторичната му страна закачени подходящ за ниското напрежение симистор и крушка на ниско напрежение, и да си напишете софтуера спокойно
Така ще сте защитени от високото напрежение, а след като напишете софтуера и той работи, просто ще свържете схемата за 220V и след като го поставите в подходяща електроизолационна кутия с предпазителче на входа, може да тествате.
2. Разликата между тиристор и транзистор е, че транзистора се отпушва при подаване на управляващо напрежение и се запушва, когато то отпадне. Тиристора се отпушва при подаване на управляващо напрежение и
остава отпушен след като то отпадне. Запушва се по 2 начина:
- когато променливото напрежение мине през стойност 0
- като върху тиристора се разреди кондензатор, зареден с напрежение с обратен поляритет
Няма да коментирам 2-я вариант за запушване, ще коментирам само 1-я.
3. Поради факта, че тиристора се запушва само при преминаване на захранващото напрежение през 0, той е удобен за регулиране само на променливи напрежения. Регулирането става, като се "отреже" синусоидата, в зависимост от това в кой момент ще се подаде управляващия импулс към тиристора:

(картинката е взета от
http://en.wikipedia.org/wiki/Thyristor)
- ако импулсът се подаде в началото на периода, тиристорът ще е отпушен през по-голяма част от времето и средната стойност на напрежението ще е по-голяма;
- ако импулсът се подаде по-към края на периода, тиристорът ще е отпушен по-малко време и средната стойност ще е по-малка.
Този принцип на регулиране изисква управляващото устройство - в случая програмата в микроконтролера, да е съобразена с продължителността на периода - при 50Hz целия период е 1/50 = 20ms, но имаме 2 преминавания през 0-та, следователно имаме 2 полупериода по 10ms.
Освен с продължителността на полупериодите, т.е. с честотата на напрежението, трябва софтуера да се съобразява и с преминаването през 0-та - ето защо е необходим "детектор на нулата".
Всички тези особености са взети под внимание във файла, който предложи колегата:
Той започва със схемата на "детектора на нулата", т.е. zero crossing detection, после е показана същността на самото регулиране - как се "отрязва" синусоидата, следва алгоритъма на програмата и накрая схемата на устройството
Тези неща са описани в учебниците по електротехника за техникумите и в книгите по
полупроводникова техника, които са полезно и дори задължително четиво за всеки, които иска да се занимава с електроника, ето защо ги препоръчвам на по-начинаещите - например ученици
А конкретно за регулирането с тиристори, имам някакъв блед спомен, че на лекциите по токозахранващи устройства май го бяхме изучавали като "вертикално регулиране", но не съм сигурен
