Як я міг займатися програмуванням перемикача (заснованого на твердотільному реле або триака), який спрацьовує на потужність, що перетинає нуль?
Для цих питань, які не знайомі з темою: Увімкніть живлення 230 В, коли синусоїда лінії електропередачі перетне нуль - результат мінімізує електромагнітні порушення, спричинені швидким сплеском струму.
Зокрема, я вважаю за краще перенести якомога більше програмного забезпечення. Схема виявлення, що складається з малого трансформатора, діода і пари резисторів для контролю рівнів і струмів у контролі, забезпечує "1", коли вхідна потужність змінного струму знаходиться в позитивній половині, "0" в негативному, прикріплена до входу GPIO-штифта. Вихід складається з декількох твердотільних реле та голих предметів, щоб підтримувати їх роботу (підтяжки тощо), прикріплених до вихідних штифтів GPIO.
Проблема в термінах: за допомогою змінного струму 50 Гц ми отримуємо 100 нульових перетинів за секунду, один півцикл - 10 мс. Щоб потрапити на розумну відстань від нульового перетину, щоб зберегти вказану EMI низькою, ми не повинні активувати вихід більш ніж на 10% після (або раніше) події нульового перетину, це означає + -1 мс допуску. Це не означає час реакції 1 мс - ми можемо з розумом очікувати, що наступний перетин нуля відбудеться точно через 10 мс після першого, або четвертого - 40 мс. Йдеться про деталізацію - якщо ми допускаємо 20 мс для реакції, вона повинна бути між 19 і 21 мс, а не 18 або 22.
Як я можу реалізувати такий вихідний GPIO на таймері або в межах 1 мс, оскільки вхід виявляє край, або в межах фіксованого кратного 10 мс відтоді - бажано з урахуванням деякого негативного зміщення (скажімо, трансформатор і реле вводять затримку 1,6 мс; тому я хочу, щоб тригер вийшов з 8.4+ (n * 10) мс, оскільки вхідний імпульс, таким чином зміщення протидіє затримці, введеній ланцюгом.) - звичайно, "на вимогу користувача", скажімо, користувач пише "1 "до файлу a / sys / class / ... і при найближчій (приблизно) можливості висновок" увімкнено ". Користувач пише "0", і коли нульовий перехід приходить, конкретні реле відключаються.
Я вважаю, що для цього потрібно буде написати або зламати модуль ядра. Не могли б ви вказати мені на те, що обробляє GPIO-штифти Raspberry Pi в ядрі, і які таймери я можу приєднати до нього (якщо таких вже немає), щоб отримати такий функціонал?